Est-il possible de regrouper par colonne via join ?
P粉702946921
P粉702946921 2023-09-09 09:35:39
0
1
564

select tc.UIDPK,
count(torder.status) as total
from TCUSTOMER tc
inner join TORDER torder on tc.UIDPK=torder.CUSTOMER_UID
where tc.UIDPK=490000;

La requête ci-dessus fonctionne bien pour moi. Mais le statut peut être IN_PROGRESS, FAILED, ON_HOLD

Comment écrire une requête qui renvoie un nombre de statuts comme tc.UIDPK, commandes totales, commandes IN_PROGRESS, commandes totales-commandes IN_PROGRESS. J'ai essayé ce qui suit mais je n'ai pas fonctionné

select tc.UIDPK,
count(torder.status) as total,
count(torder2.status) as inprogress,
count(torder.status)-count(torder2.status) as remaining
from TCUSTOMER tc
inner join TORDER torder on tc.UIDPK=torder.CUSTOMER_UID
left join TORDER torder2 on tc.UIDPK=torder2.CUSTOMER_UID and torder2.status in('IN_PROGRESS')
where tc.UIDPK=490000;

P粉702946921
P粉702946921

répondre à tous(1)
P粉019353247

Pas besoin de vous connecter plusieurs fois, utilisez SUM.

Essayez-le

select tc.UIDPK,
       COUNT(torder.status) as total,
       SUM(torder.status = 'IN_PROGRESS') as inprogress,
       COUNT(torder.status) - SUM(torder.status = 'IN_PROGRESS') as remaining
from TCUSTOMER tc
inner join TORDER torder on tc.UIDPK=torder.CUSTOMER_UID
where tc.UIDPK=490000
group by tc.UIDPK;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal