it-swarm-eu.dev

Výběr dat z více řádků do jednoho řádku

Mám tabulku, která má sloupce jako následující. Číslo šarže je věc návrhu databáze, jako je číslo řádku

demand_id        batch_number    debit status     customer
     34               1             yes
     34               2                             jack 
     35               1             no                
     35               2                             kate 

Chci vytvořit dotaz, který by vrátil toto:

   demand_id         debit status      customer
     34                  yes             jake
     35                  no              kate 

Jak to mohu udělat?

6
elimerv

Připojte se k sobě.

Tak:

select yt1.demand_id, yt1.debit_status, yt2.customer
from yourtable yt1, yourtable yt2
where yt1.demand_id = yt2.demand_id
and yt1.debit_status is not null
and yt2.customer is not null;

Nebo když batch_number lze spolehlivě použít k načtení 2 řádků potřebných k vytvoření jednoho řádku:

select yt1.demand_id, yt1.debit_status, yt2.customer
from yourtable yt1, yourtable yt2
where yt1.demand_id = yt2.demand_id
and yt1.batch_number = 1
and yt2.batch_number = 2;

SQL fiddle .

8
Philᵀᴹ

Seskupte podle poptávky a agregujte debit_status/zákazníka.

SELECT Demand_Id
   , Max(Debit_Status) Debit_Status
   , Max(Customer) Customer
FROM yourtable GROUP BY Demand_Id;

To nemusí fungovat, pokud váš vzorek není reprezentativní.

SQL fiddle (data od Phil's).

8
Leigh Riffel