| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:遇麻烦:SQL数据合并问题
只看楼主 加入收藏
yangjiecapab
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
遇麻烦:SQL数据合并问题
现有以下案例:
create   table   table1(姓名   nvarchar(10),     小班   nvarchar(10),         四致界限   nvarchar(20),大班   nvarchar(20) )
insert   table1   select     '张三 ','1号 ','张三东南西北1号 ','ss'         
union   all   select     '张三 ','2号 ','张三东南西北2号 ',''
union   all   select     '李四 ','1号 ','李四东南西北1号 ','ss'     
union   all   select     '张三 ','3号 ','张三东南西北3号 ',''
union   all   select     '李四 ','2号 ','李四东南西北2号 ',''
union   all   select '李四','3号','李四东南西北2号 ','ss '
union   all   select '张三','3号','李四东南西北2号 ','ss'

create   function   test_f(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select   @s=isnull(@s+ ' ', ' ')+小班   from   table1   where   姓名=@Name
return   @s
end

go
create   function   test_f2(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select   @s=isnull(@s+ ' ', ' ')+四致界限   from   table1   where   姓名=@Name
return   @s
end
go
drop function test_f2
create   function   test_f3(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select   @s=isnull(@s+ ' ', ' ')+ 大班   from   table1   where   姓名=@Name
return   @s
end
go

select   distinct   姓名,[小班]=dbo.test_f(姓名),[四致界限]=dbo.test_f2(姓名),[大班]= dbo.test_f3(姓名)  from   table1
select * from table1

查询出来结果为:
[local]1[/local]

可是发现相同的列的内容也会一起加上去,我想把完全重复的列的内容只显示一条,如果为NUll的则把不为空的数据填进NUll的列里!

高手请帮帮忙啊!比较急。。
搜索更多相关主题的帖子: SQL 数据合并 麻烦 
2010-10-21 09:58
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:20 
create   table   table1(姓名   nvarchar(10),     小班   nvarchar(10),         四致界限   nvarchar(20),大班   nvarchar(20) )
insert   table1   select     '张三 ','1号 ','张三东南西北1号 ','ss'         
union   all   select     '张三 ','2号 ','张三东南西北2号 ',''
union   all   select     '李四 ','1号 ','李四东南西北1号 ','ss'     
union   all   select     '张三 ','3号 ','张三东南西北3号 ',''
union   all   select     '李四 ','2号 ','李四东南西北2号 ',''
union   all   select '李四','3号','李四东南西北2号 ','ss '
union   all   select '张三','3号','李四东南西北2号 ','ss'

alter   function   test_f(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select  @s=isnull(@s+ ' ', ' ')+小班   from (select distinct 姓名,小班 from table1) x   where   姓名=@Name
return   @s
end

go
create   function   test_f2(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select   @s=isnull(@s+ ' ', ' ')+四致界限   from (select distinct 姓名,四致界限 from table1) x   where   姓名=@Name
return   @s
end
go

alter   function   test_f3(@Name   nvarchar(10))
returns   nvarchar(1000)
as
begin
declare   @s   nvarchar(1000)
select   @s=isnull(@s+ ' ', ' ')+ 大班   from  (select distinct 姓名,大班 from table1) x   where   姓名=@Name
return   @s
end
go


select   distinct   姓名,[小班]=dbo.test_f(姓名),[四致界限]=dbo.test_f2(姓名),[大班]= dbo.test_f3(姓名)  from   table1
select * from table1
2010-10-21 12:14
快速回复:遇麻烦:SQL数据合并问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020266 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved