欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求个sql语句,非常感谢

更新时间: 2014-01-05 02:18:16 责任编辑: Author_N1

 

求个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
/*
Col1 Col2 col3
0001 3 NULL
0002 4 6
0002 5 NULL
*/

--参考方法--
table1 左连接 select a.*,b.Col2 from table2 a ,(select Col1 , min(Col2) as Col2  from table2 group by Col1  ) where a.Col1    =b.Col1    
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:16
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8272/
本文WWW.DOC100.NET DOC100.NET版权所有。