表列的聚合和升序合并

时间:2015-04-17 05:57:58

标签: sql sql-server-2008-r2

我该怎么做? 列的唯一组合是Number + Element,Cond1..n是SUMming(),Variable1..n也需要相等。

以下是我的想法

enter image description here

你知道我怎么能达到这个目的吗?在真正的数据库中它有几千行。

SQL小提琴:http://sqlfiddle.com/#!6/1a7d0/1

谢谢

1 个答案:

答案 0 :(得分:1)

您应该阅读String Aggregation in the World of SQL Server以更好地了解Group_concat在sql server中的工作原理。试试这个,

SELECT
     t.Number
     ,[KEY]= STUFF((
          SELECT ',' + tt.[key]
          FROM SourceTb tt
          WHERE t.Number = tt.Number and t.Element = tt.Element and t.Variable1 = tt.Variable1
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
    ,t.Element
    ,t.Variable1
    ,SUM(CAST(t.cond1 as INT))
    ,SUM(CAST(t.cond2 as INT))
FROM SourceTb t
GROUP BY t.Number
    ,t.Element
    ,t.Variable1
ORDER BY t.Number desc

HERE is working fiddle