SQL Menggabungkan Baris


0

Saya memiliki tabel yang memiliki tiga kolom: ID, Tanggal, Grup. Ada dua baris untuk setiap ID unik (di mana Grup = 1 atau di mana Grup = 2). Bagaimana saya bisa menggabungkan ini ke dalam tabel dengan satu baris per ID dan nilai Tanggal diurutkan menjadi dua kolom?

Saya sudah:

ID      Date        Group
123456  12/7/2016   1
123456  12/3/2016   2
789654  11/8/2016   1
789654  12/1/2016   2

Saya ingin:

ID      Date1       Date2
123456  12/7/2016   12/3/2016
789654  11/8/2016   12/1/2016

Ini untuk Sybase 12, jika itu penting.

Jawaban:


1
SELECT DISTINCT 
    s.ID,
    s1.[Date] AS Date1,
    s2.[Date] AS Date2
FROM @SomeTable s
LEFT JOIN @SomeTable s1 ON s.ID = s1.ID AND s1.[Group] = 1
LEFT JOIN @SomeTable s2 ON s.ID = s2.ID AND s2.[Group] = 2

atau

SELECT DISTINCT
    s.ID,
    (SELECT [Date] FROM @SomeTable s1 WHERE s1.ID = s.ID AND s1.[Group] = 1) AS Date1,
    (SELECT [Date] FROM @SomeTable s2 WHERE s2.ID = s.ID AND s2.[Group] = 2) AS Date2
FROM @SomeTable s

adalah dua cara pertama yang muncul di pikiran. Keduanya menganggap hanya ada satu catatan untuk setiap kombinasi ID / Grup.


Terima kasih. Dan ya, asumsi Anda benar. Saya akan menerima jawaban Anda setelah saya memutarnya hari Jumat ini.
— picobit

Terima kasih, saya menggunakan metode pertama. Tidak mencoba yang kedua. Bergabung dua kali tampaknya sangat jelas sekarang ...
— picobit

1

Anda juga bisa melakukannya hanya menggunakan dua tabel di klausa 'dari':

select a.ID, a.Date as Date1, b.Date as Date2
from mytable a, mytable b
where a.ID=B.ID
and a.Group=1
and b.Group=2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.