2016-01-06 39 views
6

Şu anda eski bir çalışanın oluşturduğu posta aboneleri veritabanını temizlemeye çalışıyorum. Çoğu sorunu (çoğunlukla kopyaları) birleştirip düzeltebildim, ancak birden çok bölgeye abone oldukları için yinelenen kayıtları olan abonelerim var.SQL, benzer kayıtları aynı tablodan tek satırda nasıl birleştirilir?

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1      1 
2  Chuck  G.... 12 Lorem   1      1 
3  Chuck  G.... 12 Lorem   1     1 

Ve Birleştirmek istediğiniz: Ne yapmak istiyorum İsterdim yinelenen kaydın bir Redacted fiili örnek birleştirmek olduğunu Burada 1.

içine bu yinelenen kayıtları birleştirmek olduğunu 1 kayıt içine 2 ve silme tüm çiftleri (bazılarına sahip en fazla 9 yinelenenlere) böyle:

id  first  last address truck machinery gl ne nw 
------------------------------------------------------------------------ 
1  Chuck  G.... 12 Lorem 1  1   1  1  1 
+0

Bazı sütunlar aynı sütunda farklı değerler içeriyorsa, örneğin, makine = 1,2,3? Hangi değer seçilmelidir? – krokodilko

+0

Bu durumlarda, her zaman sadece '1' veya NULL olur. Amacı, sadece bu baskıya abone olup olmadığını tanımlamaktır. Yani, bu sütunda yinelenen satırların herhangi bir yerinde bir '1' varsa, '1' kullanılmalıdır. –

cevap

5

Kullanım Group By ve Max/Min Agrega

SELECT id, 
     first, 
     last, 
     address, 
     Max(truck)  AS truck, 
     Max(machinery) AS machinery, 
     Max(gl)  AS gl, 
     Max(ne)  AS ne, 
     Max(nw)  AS nw 
FROM yourtable 
GROUP BY id, 
      first, 
      last, 
      address 
+0

Parlak. Çok basit. Bu tür bir seçimi kullanarak, çoğaltmaları olmayan yeni bir aboneler listesi oluşturabildim ve tüm uygun verileri birleştirdim. –

İlgili konular