【发布时间】:2017-09-21 14:16:38
【问题描述】:
我有一张这样的桌子:
Store Holiday Date_Index Temp
123 XMAS t_0 34.9
234 XMAS t_1 M
123 XMAS t_1 22.3
123 XMAS t_2 28.5
我正在尝试将其转换为这样的内容:
Store Holiday t_0 t_1 t_2
123 XMAS 34.9 22.3 28.5
234 XMAS 32.1 NULL 29.5
通过使用:
Select *
from
(
select Store, Holiday, Date_Index, Temp
from myTable
)
PIVOT
(
sum(CASE WHEN ISNUMERIC(Temp) = 1 THEN cast(Temp as decimal) ELSE NULL END)
FOR DATE_INDEX IN ([t_0],[t_1],[t_2])
) as PivotTable;
我的问题是 Temp 列包含字母和数字的混合。我试图以 case 语句的总和为中心,但收到一条错误消息。如何正确补偿非数字字符?
【问题讨论】:
标签: sql sql-server pivot case