首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问个group by 的有关问题。解决不了啊

2013-09-11 
问个group by 的问题。解决不了啊。本帖最后由 zly22169846 于 2013-09-11 08:55:20 编辑CREATE TABLE [dbo]

问个group by 的问题。解决不了啊。
本帖最后由 zly22169846 于 2013-09-11 08:55:20 编辑


CREATE TABLE [dbo].[Table_1](
[ID] [nchar](10) NULL,
[a] [int] NULL,
[DocNo] [nchar](10) NULL,
[num] [int] NULL
) ON [PRIMARY]


insert into table_1
select 1,177,101,5
union all select 2,178,102,5
union all select 3,177,103,5
union all select 4,179,104,5
union all select 5,179,105,5


语句如上。
然后查询以下语句 

select SUM(num) as SUM_num,a FROM table_1
group by a

得到的结果是

SUM_num     a
10      177
5      178
10      179


我同在要实现如下界面的数据结果?就是字段a中177 这个累加的sum_num=10是由列Docno=101和103累加得到的,而a=178只有一个就是他自己的102,同样a=179也同样由104和105累加,那我要添加一个列名ccc把101,103 添加到这个字段中。好做备注。请教如何实现?谢谢。

SUM_num     a            列名ccc
10     177         101,103
5     178         102       
10     179         104,105 
sql
[解决办法]
select SUM(num) as SUM_num,a ,
ccc=STUFF((SELECT ',' + RTRIM(DocNo) FROM dbo.table_1 b WHERE b.a=a.a FOR XML PATH('')),1,1,'')
FROM table_1 a
group by a
/*
SUM_numaccc
10177101,103
5178102
10179104,105
*/

[解决办法]

select sum(x.num) 'SUM_num',
       x.a,
       stuff((select ','+rtrim(y.DocNo)


              from table_1 y 
              where y.a=x.a for xml path('')),1,1,'') 'ccc'
 from table_1 x
 group by x.a
 
/*
SUM_num     a           ccc
----------- ----------- -------------
10          177         101,103
5           178         102
10          179         104,105

(3 row(s) affected)
*/

热点排行