SQL。可以在分组后查看每个个人ID吗?

时间:2014-09-23 06:55:54

标签: sql sql-server group-by

SQL问题。

是否可以在分组后的select中看到uniqe ID?

实施例

分组前,taskid,目标代码和用户ID

ID     TaskId     Purposecode    UserId     Time
1      1          915            421        7.0
2      1          915            421        7.0
3      1          915            421        7.0
4      4          912            421        7.0
5      4          912            421        7.0

分组后

     TaskId     Purposecode    UserId     Time
       1          915            421        21.0 (uniqeID: 1,2,3)
       4          912            421        14.0 (uniqeID: 4,5)

我希望看到每个组的所有ID。这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以做到这一点,互联网和网站上有很多例子...下次尝试搜索更多:

DECLARE @table TABLE (ID INT, TaskId INT,Purposecode INT,UserId INT, Time Numeric(5,1))
INSERT INTO @TABLE SELECT 1, 1, 915, 421, 7.0
INSERT INTO @TABLE SELECT 2, 1, 915, 421, 7.0
INSERT INTO @TABLE SELECT 3, 1, 915, 421, 7.0
INSERT INTO @TABLE SELECT 4, 4, 912, 421, 7.0
INSERT INTO @TABLE SELECT 5, 4, 912, 421, 7.0


SELECT TaskId, Purposecode, UserId, SUM(Time) AS Time,

    STUFF(
        (SELECT ',' + CAST(T2.ID AS VARCHAR(10)) 
        FROM @table T2
        WHERE T.Purposecode = T2.Purposecode
            AND T.TaskId = T2.TaskId
            AND T.UserId = T2.UserId
        FOR XML PATH('')
        ), 1, 1, ''
    ) AS UniqueIDs

FROM @table AS T
GROUP BY TaskId, Purposecode, UserId

STUFF删除第一个逗号

FOR XML PATH将所有行放入一个