2016-03-23 15 views
2

次の列を持つチケットシステム用のテーブルがあります。重複する行を結合して1つの行を出力する

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

行の大部分が列「注文」に基づいて複製されていないがしかし「順序」は、それが2桁に分割されている次に一日から交差シナリオでは、1はendDateにを有します午後5時(終わり)、2日目は午前8時(開始日)です。対応する開始日と終了日は必要に応じて設定します。 一部の注文は2日以上の長さになる可能性がありますので、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 

私は私の開始と終了とのユニークな「注文」のIDのテーブルを与えるために、すべての行を結合する必要があります。その重複の最も低い開始日およびその重複の最も高い終了日を有する行である。

私は、新しいテーブルを作成してそれを作成し、特定の値に基づいて1つの重複した行を選択できますが、複数行の値に基づいて新しい行を作成する方法は不明です。

答えて

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

このために新しいテーブルを作成する必要がないこと - GROUP BYクエリは、生産、使用中の共通極めてであり、単にあなたが必要な結果を得るために、そのクエリを実行するには、固有の害はありませんあなたはそれらを必要とします。

+0

Thx VoteyDisiple。私は関係のない理由で別のテーブルに移動しています - 消費者を正しいテーブルに誘導する以外に、転送スクリプトを所有していません。私は知っているが、後でそれを戦う;) – Fearghal

関連する問題