我有很多行具有相同的数据但是一列或两列不同。
我想通过在常用数据上将它们合并在一起来减少行数,然后将不同的数据拉入新列。此外,一些行将缺少公共数据,但只要其中一行具有Order_ID(和Type)的值,就可以获取该值。
下面可以看得更清楚
原始数据(工作):
Order_ID Type CreatedTime
5 Collect 1000000000
5 Deliver
5 Deliver 1100000000
8 Collect 2000000000
8 Collect 2000000000
8 Deliver 2300000000
所需:
Order_ID CollectCreatedTime DeliverCreatedTime
5 1000000000 1100000000
8 2000000000 2300000000
我拥有的是:
SELECT Order_ID, SOMETHING() As CollectCreatedTime, SOMETHING() As DeliverCreatedTime
FROM `Jobs` GROUP BY `Order_ID`
但是,我无法弄清楚如何“选择存在的第一个值(如果没有值,则选择不存在),并将其附加到GROUP BY选择。”
请告知我是否需要提出问题以便更好地解释。
答案 0 :(得分:2)
似乎你想要条件聚合:
SELECT Order_ID,
min(case when Type = 'Collect' then CreatedTime end) as CollectCreatedTime,
min(case when Type = 'Deliver' then CreatedTime end) as DeliverCreatedTime
FROM `Jobs`
GROUP BY `Order_ID`