类别值分为多列?

时间:2019-05-12 16:41:22

标签: sql sql-server sql-server-2008

我有一张这样的桌子:

DateKey   | Category  |  Value 
----------+-----------+---------
20190102  | CAT1      | 12
20190502  | CAT2      | 13
20190502  | CAT2      | 16
20190102  | CAT1      |  2
20190102  | CAT3      | 22
....

我想要这样的结果。

列是根据SQL语句自动生成的

DateKey   | CAT1SUM   |  CAT2SUM  |  CAT3SUM
----------+-----------+-----------+-----------
20190102  | 14        |  0        | 22
20190502  |  0        | 29        |  0

我知道如何使用已知的类别进行此操作,但是问题是类别数量未知,但是数量不是太多(小于20)。我知道我可以编写一个存储过程/函数,但是可以将其归档在尽可能少的sql语句中吗?最有效的方法是什么?

我知道我可以得到一个这样的单列表

SELECT 
    DateKey, Category, SUM(Value) SummedValue
FROM 
    MyTable
GROUP BY 
    DateKey, Category

但是,结果是一个“值”列表,这不是我想要的。

0 个答案:

没有答案