SQL 中的数据透视、逆透视与自定义聚合
1. 多对一数据透视
多对一数据透视是一种特殊的数据透视方式,允许单个目标行 - 列交叉点代表多个源行。与一对一数据透视不同,多对一数据透视中使用的聚合函数更具实际意义。
1.1 示例场景
假设需要查询 TSQLV3 数据库中的 Sales.OrderValues 视图,将数据进行透视,使得每行代表一个客户,每列代表一个订单年份,每个客户和年份的交叉点返回适用值的总和。
1.2 标准方法实现
USE TSQLV3;
SELECT custid,
SUM(CASE WHEN orderyear = 2013 THEN val END) AS [2013],
SUM(CASE WHEN orderyear = 2014 THEN val END) AS [2014],
SUM(CASE WHEN orderyear = 2015 THEN val END) AS [2015]
FROM (SELECT custid, YEAR(orderdate) AS orderyear, val
FROM Sales.OrderValues) AS D
GROUP BY custid;
该查询的输出结果如下:
| custid | 2013 | 2014 | 2015 |
| ------ | ---- | ---- | ---- |
| 1 | NULL | 2022.50 | 2250.50 |
超级会员免费看
订阅专栏 解锁全文
276

被折叠的 条评论
为什么被折叠?



