0

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]
4

1 に答える 1