以文本方式查看主题 - 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 -- 解决了,多谢老师! |