27、SQL 中的数据透视、逆透视与自定义聚合

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 |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值