sql 相同数据合并显示

布谷歌 2010-08-31 04:10:40
通过一个复杂的查询得到下面的结果:
CusDsc PrdCd PrdNm SalePrice
北京朝批 A101600 CP 12P 92.3077
北京朝批 A101610 CP 6P 95.7265
北京朝批 A101620 CP 2P 98.4615
北京朝批 A101630 CP 20P 159.2308
北京朝批 A101660 CP 12P 92.3077
北京朝批 A101670 CP 6P 95.7265
北京朝批 A101680 CP 2P 98.4615
零售 A101600 CP 12P 100.2331
零售 A101610 CP 6P 102.5641
零售 A101620 CP 2P 68.3761
零售 A101630 CP 20P 162.3932
零售 A101660 CP 12P 100.2331

因为存在不同的PrdCd有相同的PrdNm和SalePrice,想实现将PrdCd合并显示,如下面的结果:
CusDsc PrdCd      PrdNm SalePrice
北京朝批 A101600,A101660 CP 12P 92.3077
北京朝批 A101610,A101670 CP 6P 95.7265
北京朝批 A101620,A101680 CP 2P 98.4615
北京朝批 A101630   CP 20P 159.2308
零售 A101600,A101660 CP 12P 100.2331
零售 A101610      CP 6P 102.5641
零售 A101620      CP 2P 68.3761
零售 A101630      CP 20P 162.3932

对于数据库里已经存在的table,我知道用函数可以实现的数据行的合并。但是这里是一个临时查询,该如何实现呢? 请各位献计!
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
布谷歌 2010-08-31
  • 打赏
  • 举报
回复
非常感谢jaydom! 结贴去了
jaydom 2010-08-31
  • 打赏
  • 举报
回复

if OBJECT_ID('tb') is not null
drop table tb
go
create table tb(CusDsc varchar(10),PrdCd varchar(7),PrdNm varchar(10),SalePrice numeric(7,4))
insert into tb
select '北京朝批', 'A101600', 'CP 12P', 92.3077 union all
select '北京朝批', 'A101610', 'CP 6P' ,95.7265 union all
select '北京朝批', 'A101620', 'CP 2P' ,98.4615 union all
select '北京朝批', 'A101630', 'CP 20P', 159.2308 union all
select '北京朝批', 'A101660', 'CP 12P', 92.3077 union all
select '北京朝批', 'A101670', 'CP 6P', 95.7265 union all
select '北京朝批', 'A101680', 'CP 2P', 98.4615 union all
select '零售', 'A101600', 'CP 12P' ,100.2331 union all
select '零售', 'A101610', 'CP 6P' ,102.5641 union all
select '零售', 'A101620', 'CP 2P' ,68.3761 union all
select '零售', 'A101630', 'CP 20P' ,162.3932 union all
select '零售', 'A101660', 'CP 12P' ,100.2331


select CusDsc,PrdCd=STUFF((select ','+PrdCd from tb
where a.CusDsc=CusDsc and a.PrdNm=PrdNm and a.SalePrice=SalePrice for xml path('')),1,1,''),
PrdNm,SalePrice
from tb a
group by CusDsc,PrdNm,SalePrice

CusDsc PrdCd PrdNm SalePrice
北京朝批 A101600,A101660 CP 12P 92.3077
北京朝批 A101630 CP 20P 159.2308
北京朝批 A101620,A101680 CP 2P 98.4615
北京朝批 A101610,A101670 CP 6P 95.7265
零售 A101600,A101660 CP 12P 100.2331
零售 A101630 CP 20P 162.3932
零售 A101620 CP 2P 68.3761
零售 A101610 CP 6P 102.5641
布谷歌 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]
2005及以上xml
2000只能函数了
[/Quote]

我用的是sqlserver2008
水族杰纶 2010-08-31
  • 打赏
  • 举报
回复
2005及以上xml
2000只能函数了

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧