sqlserver PIVOT为空时取前一个
时间: 2024-05-14 22:18:27 浏览: 53
在 SQL Server 中,如果使用 PIVOT 查询时,有些列的值为 NULL,可以使用 COALESCE 或 ISNULL 函数来获取前一个非 NULL 值。
例如,假设有以下数据:
```
Name Year Sales
---------------------
Alice 2019 100
Alice 2020 NULL
Bob 2019 200
Bob 2020 150
```
可以使用以下 PIVOT 查询:
```
SELECT Name, [2019], [2020]
FROM (
SELECT Name, Year, Sales
FROM Table1
) AS SourceTable
PIVOT (
SUM(Sales)
FOR Year IN ([2019], [2020])
) AS PivotTable
```
这将生成以下结果:
```
Name 2019 2020
--------------------
Alice 100 NULL
Bob 200 150
```
现在,如果想要在 2020 年的销售额为 NULL 的情况下获取前一个年份(即 2019 年)的销售额,可以使用 COALESCE 函数来获取前一个非 NULL 值:
```
SELECT Name, COALESCE([2019], [2020]) AS [2020]
FROM (
SELECT Name, Year, Sales
FROM Table1
) AS SourceTable
PIVOT (
SUM(Sales)
FOR Year IN ([2019], [2020])
) AS PivotTable
```
这将生成以下结果:
```
Name 2020
------------
Alice 100
Bob 200
```
如果想要使用 ISNULL 函数,则可以将其替换为 COALESCE 函数。
阅读全文