合并重复行以输出单行

时间:2016-03-23 11:45:03

标签: sql sql-server duplicates

我有一张票据系统表,其中包含以下列;

order<string> startDate<datetime> endDate<datetime>

根据列&#39;顺序&#39;大多数行不会重复。然而,在一个&#39;命令&#39;从一天到下一天的交叉,它被分成2个订单,第一个有一个结束日期是下午5点(一天结束),第二个有一个开始日期是早上8点(一天的开始)。他们相应的开始和结束日期是根据需要。 有些订单可能长达2天,因此会被拆分为&gt; 2行。

例如

order startDate endDate
1 2016-03-29 11:00:53.000 2016-03-29 17:00:53.000
1 2016-03-30 08:00:53.000 2016-03-30 12:48:53.000
2 2016-03-30 10:17:53.000 2016-03-30 13:08:53.000

would transform to 
1 2016-03-29 11:00:53.000 2016-03-30 12:48:53.000
2 2016-03-30 10:17:53.000 2016-03-30 13:08:53.000

我需要将所有行组合在一起,以便为我提供一个独特的排序表#39;具有开始和结束的ID。即重复项开始日期最短的行和重复项的最高结束日期。

我打算通过创建一个新表并填充它来执行此操作,并且可以根据特定值选择1个重复行,但不确定如何根据多行中的值创建新行。

1 个答案:

答案 0 :(得分:5)

SELECT order, MIN(startDate), MAX(endDate)
FROM your_table_name
GROUP BY order

可能无需为此创建新表格 - GROUP BY查询 在生产使用中很常见,并且简单来说没有任何内在的危害运行该查询以在需要时获得所需的结果。