以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于SQL语句中GROUP BY 用法请教  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=111417)

--  作者:ap9709130
--  发布时间:2017/12/21 15:09:00
--  关于SQL语句中GROUP BY 用法请教
我的表中有三列,_Identify ,仓库,提货人
_Identify      仓库       提货人
1                a仓库       李
2                a仓库        李
3                b仓库       陈

我想生成一张表,是用仓库分组的,要求效果是这样,SQL语句要怎么写?

仓库           提货人           DW
a仓库          李                 1,2
b仓库         陈                   3


请老师指点.多谢!

--  作者:有点甜
--  发布时间:2017/12/21 15:21:00
--  

如果是sqlserver,参考

 

http://blog.csdn.net/rolamao/article/details/7745972

 


--  作者:ap9709130
--  发布时间:2017/12/21 17:15:00
--  
老师,

通过你的资料研究我的SQL语句如下:

S ele ct 仓库, 
STUFF(
     ( 
      S ele ct \',\'+ 提货人 FROM (s ele ct [仓库],[提货人] from {订单主表}) a WHERE b.仓库 = a.仓库 FOR XML PATH(\'\')
     ),1 ,1, \'\') 提货人 
FROM (se le ct [仓库],[提货人] from {订单主表}) b 

G ROUP BY 仓库


这个语句没有问题,出来的效果如下:
仓库           提货人 
a 仓库       李
b 仓库       陈

但是,怎么才有再加一列?搞不出来

--  作者:有点甜
--  发布时间:2017/12/21 17:29:00
--  

 

select 仓库, 提货人 = (stuff((select \',\' + 提货人 from 订单主表 where 仓库 = a.仓库 for xml path(\'\')),1,1,\'\')) from 订单主表 a group by 仓库 

 

select 仓库, 提货人 = (stuff((select \',\' + 提货人 from 订单主表 where 仓库 = a.仓库 for xml path(\'\')),1,1,\'\')), dw = (stuff((select \',\' + [_Identify] from 订单主表 where 仓库 = a.仓库 for xml path(\'\')),1,1,\'\')) from 订单主表 a group by 仓库 



--  作者:ap9709130
--  发布时间:2017/12/22 13:14:00
--  
有点甜老师

你的代码出来的效果是这样的
仓库           提货人           DW
a仓库          李,李            1,2
b仓库         陈                   3

提货人那里重复了.


--  作者:ap9709130
--  发布时间:2017/12/22 13:35:00
--  
解决了,多谢老师!