2014-09-23 56 views
0

SQL问题。SQL。分组后可以看到每个人的ID吗?

是否有可能看到uniqe ID后选择一组?

例子。

组通过,任务id,purposecode和用户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

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

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把所有行合成为一个

+0

非常感谢你@达卡! :) – Zaz 2014-09-23 07:24:33

相关问题