Mysql 选择第一个有效值并作为新列追加到GroupBy

Mysql 选择第一个有效值并作为新列追加到GroupBy,mysql,sql,Mysql,Sql,我有许多行具有相同的数据,但有一列或两列是不同的 我希望通过在公共数据上将行合并在一起,然后将不同的数据拉入一个新列,从而减少行数。此外,某些行将丢失公共数据,但只要其中一行具有Order_ID(和Type)的值,它就可以接受该值 下面可以看得更清楚 原始数据(作业): 期望的: Order_ID CollectCreatedTime DeliverCreatedTime 5 1000000000 1100000000 8 2000000000 2300000000 我所拥有的是: SELE

我有许多行具有相同的数据,但有一列或两列是不同的

我希望通过在公共数据上将行合并在一起,然后将不同的数据拉入一个新列,从而减少行数。此外,某些行将丢失公共数据,但只要其中一行具有Order_ID(和Type)的值,它就可以接受该值

下面可以看得更清楚


原始数据(作业):

期望的:

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`
但是,我不知道如何“选择存在的第一个值(如果不存在值,则选择无值)并通过选择将其附加到组中。”

请告知我是否需要存在该问题以更好地解释。

似乎您需要条件聚合:

似乎您需要条件聚合:


我不是这么认为的。当你说存在的第一个值时,你是指类似MIN()的值吗?很抱歉,我试图将其格式化为类似于表的格式,但它不起作用refresh@GregViers是,如果订单ID和类型相同,则CreatedTime每次都将为Null或相同的值,我只需要一个正确的值,如果没有正确的值,则不需要任何值。子查询中的ORDER BY没有意义。您可以删除它。实际上,不需要子查询,只需直接从作业中选择。我不是这样找到它的,“下面看得更清楚”。当你说存在的第一个值时,你的意思是类似于MIN()的值吗?很抱歉,我试图将其格式化为类似于表的格式,但它不起作用,请refresh@GregViers对如果Order_ID和类型相同,则CreatedTime每次都将为Null或相同的值,并且我只需要一个正确的值,如果没有正确的值,则不需要任何值子查询中的Order BY没有意义。您可以删除它。实际上,不需要子查询,只需直接从作业中选择。嗨,Dnoeth,谢谢,这是我需要的,只是我必须将最小值更改为最大值,因为没有值时最小值为0。嗨,Dnoeth,谢谢,这是我需要的,只是我必须将最小值更改为最大值,因为没有值时最小值为0。
SELECT Order_ID, SOMETHING() As CollectCreatedTime, SOMETHING() As DeliverCreatedTime
FROM `Jobs` GROUP BY `Order_ID`
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`