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?
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;
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).