2016-03-23 28 views
2

Aşağıdaki cols'leri olan bir bilet sistemi için bir tablo var;Tek bir satır çıktı için yinelenen satırları birleştirin

satır çoğunluğu bir sütun ancak bir 'sipariş' o 2 siparişleri ayrılmıştır sonraki günden güne geçtiği senaryoda 'sipariş' dayalı benzerine değil
order<string> startDate<datetime> endDate<datetime> 

, 1 bir ENDDATE vardır 5 pm (günün sonu) ve 2.günün başlangıç ​​saati 8 am (başlangıç ​​günü). İlgili başlangıç ​​ve bitiş tarihleri ​​gerektiği gibidir. Bazı siparişler> 2 gün uzunluğunda olabilir ve bu nedenle> 2 satıra bölünür.

örnek

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 

Bana başlangıç ​​ve uçları ile benzersiz 'sipariş' kimlikleri bir tablo vermek için tüm satırları birleştirmek gerekir. yani, kopyalarının en düşük başlangıç ​​tarihine ve kopyalarının en yüksek bitiş tarihine sahip bir satır.

Bunu, yeni bir tablo oluşturarak ve onu yerleştirerek yapmayı planlıyorum ve belirli bir değere göre yinelenen satırlardan birini seçebilir, ancak birden fazla satırdaki değerlere göre yeni bir satırın nasıl oluşturulacağını bilmeden bunu seçebilirim.

cevap

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

bunun için yeni bir tablo oluşturmak gerek olabilir - GROUP BY sorgular üretim kullanımında son derece ortak ve hiçbir doğasında zarar basitçe size gereken sonuçları elde etmek için bu sorguyu çalışan var onlara ihtiyacın var.

+0

Thx VoteyDisiple. Onları alakasız bir nedenle başka bir masaya taşıyorum - tüketiciyi doğru tabloya yönlendirmekten başka aktarım senaryosuna sahip değilim. Biliyorum biliyorum ama daha sonra için savaşır;) – Fearghal

İlgili konular