子查询或 CTE 添加附加列

Subquery or CTE to add additional column

我有一个大型卡车票数据集,每张票生成两行输出。这是因为票证对于每张票证都有“出”和“入”组件。我想生成一行输出,但包括票证“出”部分和“入”部分的信息。

SELECT Ticket_number, Oil_volume,Faciliy_ID,Ticket_Type
FROM Truckticket T
JOIN TBATTERY TB
ON TB.Battery_ID = T.Battery_ID

我的输出有两行:

Ticket_number Oil_volume Facility_ID Ticket_type
1 10 SK01 O
1 10 SK02 I

现在,当我在 Facility_ID SK01 上使用 where 子句时,我希望我的输出是什么:

Ticket_number Oil_volume Facility_ID Facility_ID Ticket_type
1 10 SK01 SK02 O

我知道我必须使用子查询或 CTE 执行此操作才能在同一行上获得 Facility_ID SK02,但我被卡住了。我希望我第一次提出我的问题。谢谢!`

现在似乎是使用聚合和数据透视的好时机,而不是子查询或 CTE。对于少量静态类型,带有 GROUP BY 的简单 MAX(CASE... 表达式可以将行转换为列。

SELECT
    Ticket_number,
    MAX(CASE WHEN Ticket_Type = 'O' then Oil_volume else NULL END) Oil_volume_out,
    MAX(CASE WHEN Ticket_Type = 'I' then Oil_volume else NULL END) Oil_volume_in,
    MAX(CASE WHEN Ticket_Type = 'O' then Facility_ID else NULL END) Facility_ID_out,
    MAX(CASE WHEN Ticket_Type = 'I' then Facility_ID else NULL END) Facility_ID_in,
FROM Truckticket T
JOIN TBATTERY TB
ON TB.Battery_ID = T.Battery_ID
GROUP BY Ticket_number;