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