web-dev-qa-db-fra.com

Sélection de données de plusieurs lignes sur une seule ligne

J'ai une table qui a des colonnes comme suit. Le numéro de lot est une chose de conception de base de données comme le numéro de ligne

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

Je veux créer une requête qui retournerait ceci:

   demand_id         debit status      customer
     34                  yes             jake
     35                  no              kate 

Comment puis je faire ça?

6
elimerv

Joignez-vous à la table.

Donc:

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;

Ou si batch_number peut être utilisé de manière fiable pour récupérer les 2 lignes nécessaires pour créer une seule ligne:

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;

violon SQL .

8
Philᵀᴹ

Regroupez par demande_id et agrégez l'état de débit/client.

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

Cela peut ne pas fonctionner si votre échantillon n'est pas représentatif.

violon SQL (données de Phil).

8
Leigh Riffel