簡體   English   中英

在單行中匯總多行

[英]Rolling up multiple rows in single row

我正在嘗試合並員工數據庫表的行

這是我原來的桌子

在此處輸入圖片說明

我想根據部門合並行。 這是我的預期結果。

在此處輸入圖片說明

我嘗試使用FOR XML PATH('')),1,1,''),但我只能向上卷一列。

我知道我們在這里也有類似的問題但它只匯總了一列。

任何幫助深表感謝

只需對其他列使用相同的方法:

SELECT
    t.Department,
    Worker = 
        STUFF((
            SELECT ';' + Worker
            FROM tbl 
            WHERE Department = t.Department
            ORDER BY Worker
            FOR XML PATH(''), TYPE
        ).value('text()[1]','NVARCHAR(MAX)'), 1, 1, N''),
    Phone = 
        STUFF((
            SELECT ';' + Phone
            FROM tbl 
            WHERE Department = t.Department
            ORDER BY Worker
            FOR XML PATH(''), TYPE
        ).value('text()[1]','NVARCHAR(MAX)'), 1, 1, N''),
    Ext = 
        STUFF((
            SELECT ';' + Ext
            FROM tbl 
            WHERE Department = t.Department
            ORDER BY Worker
            FOR XML PATH(''), TYPE
        ).value('text()[1]','NVARCHAR(MAX)'), 1, 1, N'')
FROM tbl t
GROUP BY t.Department

您也可以嘗試以下查詢:

SELECT
    t.Department,
    Worker = STUFF((
                SELECT ';' + s.Worker
                FROM
                    YourTable s
                WHERE
                    s.Department = t.Department
                FOR XML PATH('')),1,1,''),
    Phone = STUFF((
                SELECT ';' + CAST(s.Phone AS VARCHAR(25))
                FROM
                    YourTable s
                WHERE
                    s.Department = t.Department
                FOR XML PATH('')),1,1,''),
    Ext = STUFF((
                SELECT ';' + CAST(s.Ext AS VARCHAR(25))
                FROM
                    YourTable s
                WHERE
                    s.Department = t.Department
                FOR XML PATH('')),1,1,'')
FROM YourTable t
GROUP BY t.Department

我是幾天前在網上找到的。 我嘗試了一下,對我來說效果很好。 快去看看,你過得如何。

http://groupconcat.codeplex.com/

http://groupconcat.codeplex.com/releases/view/618110

創建表測試表(Customer VARCHAR(50),Product VARCHAR(50),Method VARCHAR(50),INDEX ix CLUSTERED(Customer))

插入測試表(客戶,產品,方法)值('John','Computer','Credit'),('John','Mouse','Cash'),('Will','Computer','Credit '),('威爾','鼠標','現金'),('威爾','揚聲器','現金'),('托德','計算機','信用')

選擇*從測試表

從測試表中按客戶選擇dbo.GROUP_CONCAT(產品),dbo.GROUP_CONCAT(方法)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM