连接包含公共列值的两行

时间:2019-09-20 13:43:00

标签: sql sql-server stored-procedures

我有一个存储过程,返回的表如下:

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

0 个答案:

没有答案