首页 > 解决方案 > 类别值分为多列?

问题描述

我有一张这样的桌子:

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

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

标签: sqlsql-serversql-server-2008

解决方案


推荐阅读