【发布时间】:2020-11-11 03:59:02
【问题描述】:
我在 azure sql dw 中遇到了一个奇怪的问题。我在暂存表中有 2 行,如下所示
Select Flag, Number,Value,Interest from stg.tableA where Number = 400799074
Flag Number Value Interest
Federal 0400799074 12540.8 0
Provincial 0400799074 248.97 -0.01
下面是透视和填充我的目标表的查询
SELECT
Number
,MAX(CASE WHEN Flag = 'Federal' THEN ISNULL(stg.[Value], 0) ELSE 0 END) AS [FederalValue]
,MAX(CASE WHEN Flag = 'Provincial' THEN ISNULL(stg.[Value], 0) ELSE 0 END) AS [ProvincialValue]
,MAX(CASE WHEN Flag = 'Federal' THEN ISNULL(stg.[Interest], 0) ELSE 0 END) AS [FederalInterest]
,MAX(CASE WHEN Flag = 'Provincial' THEN ISNULL(stg.[Interest], 0) ELSE 0 END) AS [ProvincialInterest]
FROM
[stg].[TableA] stg
where LoanNumber = 400799074
GROUP BY
stg.Number
我得到的输出是
Number FederalValue ProvincialValue FederalIntrest ProvincialInterest
400799074 12540.8 248.97 0 0
我遗漏了一些东西,因为我不明白为什么 ProvincialInterest 是 0 而不是 -0.01
stg表中的数据类型是float,目标表是decimal(15,2)。
当我删除 else 条件时,我得到了正确的结果,我无法删除它们,因为会有“省”行不存在的情况。
,MAX(CASE WHEN Flag = 'Provincial' THEN ISNULL(stg.[Interest], 0) /*ELSE 0 removed */ END) AS [ProvincialInterest]
【问题讨论】:
标签: azure tsql pivot azure-synapse