【问题标题】:How to rollup columns如何汇总列
【发布时间】:2016-09-21 14:26:15
【问题描述】:

我们正在运行 SQL Server 2005。我在滚动列时遇到问题。

create table group_roll 
(
    id_name int,
    full_name varchar(50),
    qty int
)
go

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 10)

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 40)

insert into group_roll (id_name, full_name, qty) 
values (1, 'jane smith', 50)

insert into group_roll (id_name, full_name, qty) 
values (1, 'dean smith', 10)

insert into group_roll (id_name, full_name, qty) 
values (2, 'frank white', 5)

insert into group_roll (id_name, full_name, qty) 
values (2, 'Ann white', 12)

insert into group_roll (id_name, full_name, qty) 
values (1, 'john smith', 8)

insert into group_roll (id_name, full_name, qty) 
values (2, 'frank white', 10)

insert into group_roll (id_name, full_name, qty) 
values (3, 'perry mason', 10)
go

select * 
from group_roll
order by id_name

输出:

   id_name       full_name          qty
   --------------------------------------
    1            john smith          10
    1            john smith          40
    1            jane smith          50
    1            dean smith          10
    1            john smith           8
    2            frank white         10
    2            frank white          5
    2            Ann white           12
    3            perry mason         10

我希望将结果汇总成这样的内容

    id_name  name                                   qty
    ----------------------------------------------------
     1       john smith, jane smith, dean smith     118
     2       frank white, ann white                  27
     3       perry mason                             10

您如何编码以汇总显示的名称和数量?

谢谢,

赛义德

【问题讨论】:

    标签: sql sql-server-2005 rollup


    【解决方案1】:

    试试这个:它会给你你所期望的,但你提供的输出,如果我没有错,第三行持有错误的值:

    SELECT id_name,
    STUFF((SELECT DISTINCT ', ' + full_name FROM group_roll A
        WHERE A.id_name=b.id_name FOR XML PATH('')),1,1,'') As name,
    SUM(qty) qty               
    FROM group_roll b
    GROUP BY id_name
    

    【讨论】:

    • 这行得通。非常感谢你。您对第三行是正确的,这是由于复制和粘贴错误造成的。它应该显示“佩里梅森”。
    • 如何将此帖子标记为“已解决”或“已关闭”或类似的内容?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2011-12-05
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多