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.