我有一个存储过程,返回的表如下:
ID | Job | Freight | Postage | Job | Type
-------------------------------------------
1 | 100 | 0 | 0 | 5.00 | J
2 | 101 | 0 | 0 | 8.00 | J
3 | 101 | 2.00 | 0 | 0 | F
4 | 102 | 0 | 0 | 4.00 | J
5 | 102 | 0 | 3.00 | 0 | P
6 | 103 | 0 | 0 | 7.00 | J
7 | 104 | 0 | 0 | 9.00 | J
8 | 105 | 0 | 0 | 6.00 | J
我希望它返回这样的表:
ID | Job | Freight | Postage | Job | Type
-------------------------------------------
1 | 100 | 0 | 0 | 5.00 | J
2 | 101 | 2.00 | 0 | 8.00 | J
4 | 102 | 0 | 3.00 | 4.00 | J
6 | 103 | 0 | 0 | 7.00 | J
7 | 104 | 0 | 0 | 9.00 | J
8 | 105 | 0 | 0 | 6.00 | J
预期结果将加入具有匹配的职位编号的行,并更改每个字段的运费和邮资值,以便它们出现在一个线。不会有同时具有运费和邮资值的 Job 实例,它将是一个或另一个,或者完全没有。
从我看到的结果看来,我可能需要使用PIVOT运算符才能实现这一点,但这似乎过于复杂。有没有一种方法可以使用CASE或IF表达式达到此结果?
我已经在使用SUM函数获取运费和邮费的值。我不确定如何将这些值显示在 Type J行中。
SUM(CASE WHEN Transaction.Type = 'F' THEN Transaction.Price END) OVER (PARTITION BY TransactionLine.ID) AS Freight