求个SQL语句,十分感谢!
我现在系统中需要用到一个SQL语句,没有办法使用存储过程,只能用SQL实现,想得到如下效果:
如果table1中有如下Col1,Col2两列,table2中有Col1,Col3两列。数据如下:
table1:
Col1 Col2
0001 3
0002 4
0002 5
table2:
Col1 Col3
0002 6
直接用leftjoin话得到的结果如下:
Col1 Col2 Col3
0001 3
0002 4 6
0002 5 6
但是我想实现这种效果:
Col1 Col2 Col3
0001 3
0002 4 6
0002 5
就是左连接如果Col1数据重复,只是连接到第一列,重复的就变成空。
这样的sql该如何写啊?求助。
[解决办法]
create table table1(Col1 varchar(10), Col2 int)
insert into table1
select '0001', 3 union all
select '0002', 4 union all
select '0002', 5
create table table2(Col1 varchar(10), Col3 int)
insert into table2
select '0002', 6
go
select t1.Col1,t1.Col2,
case when row_number() over(PARTITION by t1.col1
order by @@servername)=1
then t2.Col3
else null
end as col3
from table1 t1
left join table2 t2
on t1.Col1 = t2.Col1
/*
Col1Col2col3
00013NULL
000246
00025NULL
*/