求SQL 两表数据提取语句
发布网友
发布时间:2023-04-23 14:49
我来回答
共4个回答
热心网友
时间:2023-10-09 17:23
应该是想取得年月吧
select (cast(datepart(yy,时间栏位) as nvarchar(4))+'_'+cast(datepart(mm,时间栏位) as nvarchar(2))) as YEAR_MONTH from 表名
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
热心网友
时间:2023-10-09 17:24
1> SELECT * FROM cvfn2010_A;
2> GO
编号 开始日期 结束日期 数值
----------- -------- -------- -----------
201 NULL NULL 20
202 NULL NULL 20
204 NULL NULL 30
(3 行受影响)
1>
2> SELECT * FROM cvfn2010_B;
3> GO
编号 开始日期 结束日期
----------- -------- --------
201 20100123 20100202
201 20100203 20100323
201 20100324 20101216
201 20101217 99999999
202 20100612 20100716
202 20100718 99999999
203 20100518 99999999
204 20100412 20100510
204 20100511 20100615
204 20100616 20100718
204 20100719 99999999
(11 行受影响)
-- 检索出 预期的更新结果.
1> SELECT
2> *
3> FROM
4> cvfn2010_B
5> WHERE
6> [结束日期] != '99999999'
7> AND
8> (SELECT
9> COUNT(1)
10> FROM
11> cvfn2010_B sub_b
12> WHERE
13> sub_b.[编号] = cvfn2010_B.[编号]
14> AND sub_b.[结束日期] > cvfn2010_B.[结束日期]
15> ) <= 1
16> go
编号 开始日期 结束日期
----------- -------- --------
201 20100324 20101216
202 20100612 20100716
204 20100616 20100718
(3 行受影响)
-- 执行更新
1> UPDATE
2> cvfn2010_A
3> SET
4> [开始日期] = queryResult.[开始日期],
5> [结束日期] = queryResult.[结束日期]
6> FROM
7> cvfn2010_A,
8> (
9> SELECT
10> *
11> FROM
12> cvfn2010_B
13> WHERE
14> [结束日期] != '99999999'
15> AND
16> (SELECT
17> COUNT(1)
18> FROM
19> cvfn2010_B sub_b
20> WHERE
21> sub_b.[编号] = cvfn2010_B.[编号]
22> AND sub_b.[结束日期] > cvfn2010_B.[结束日期]
23> ) <= 1
24> ) AS queryResult
25> WHERE
26> cvfn2010_A.[编号] = queryResult.[编号]
27> go
(3 行受影响)
-- 核对结果
1> SELECT * FROM cvfn2010_A;
2> go
编号 开始日期 结束日期 数值
----------- -------- -------- -----------
201 20100324 20101216 20
202 20100612 20100716 20
204 20100616 20100718 30
(3 行受影响)
热心网友
时间:2023-10-09 17:24
select a.编号,b.开始日期,b.结束日期,a.数值
from a,(
select b.*,row_number() over(partition by 编号 order by 结束日期 desc) as num from b where 结束日期<99999999) c where a.编号=c.编号
and c.num=1
热心网友
时间:2023-10-09 17:25
select A.编号,B.开始日期,B.结束日期,A.数值 from 表A A JOIN 表B B ON A.编号=B.编号 WHERE (select COUNT(1) FROM 表B WHERE B.编号=编号 AND B.结束日期< 结束日期 )=1