2016-01-06 12 views
6

私は現在、元従業員が作成したメール購読者のデータベースを整理しようとしています。私は、ほとんどの問題(主に複製)を統合して修正することができましたが、複数の地域に加入しているため、重複したレコードを持つサブスクライバのインスタンスがあります。同じテーブルから同じ行を1行にマージする方法は?

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 

をそして、私はマージしたい:私は何をしたい、私が好きなの重複レコードの編集済みの実際の例をマージする。ここで1

にそれらの重複したレコードをマージしています1つのレコードに2、および削除すべての重複(いくつか持っている最大9つの重複する)このように:

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

一部の行に同じ列に異なる値が含まれているとします(たとえば、machinery = 1,2,3など)。どの値を選ぶ必要がありますか? – krokodilko

+0

これらの場合、itllは常に '1'またはNULLだけです。その目的は、そのエディションを購読するかどうかを簡単に定義することです。そのため、重複行のどこかにその列に '1'が存在する場合は、 '1'を使用する必要があります。 –

答えて

5

使用Group ByMax/Min集計

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

ブリリアント。とても簡単。この種の選択を使用して、重複なしで加入者の新しいリストを作成し、適切なすべてのデータをマージすることができました。 –

関連する問題