Je voudrais vérifier s'il est possible de joindre deux instructions de cas ensemble? J'ai essayé quelque chose comme ça, mais j'ai une erreur 'ConsumptionBill est un identifiant invalide'. Je sais que j'ai cette erreur car je n'ai pas d'attribut ConsumptionBill.Joindre deux instructions de cas
Alors est-il encore possible de joindre les deux instructions de cas?
SELECT CustName, preRead, newRead, newRead-preRead AS TotConsumption,
CASE
WHEN SYSDATE - sentDate > 30 THEN Consumption + FP
WHEN SYSDATE - sentDate > 45 THEN Consumption + SP
ELSE ConsumptionBill + 0
END as BIll
FROM (
SELECT C.firstName||''||C.lastName as CustName, R.newReading prevRead,
lead(R.newReading) OVER (PARTITION BY R.electircmeterID ORDER BY R.dateVisit) AS newRead, B.firstconRate as FR,
B.secconRate as SR, B.thirdconRate as TR, P.firstPenAmt as FP, P.secPenAmt as SP, bl.sentDate,
CASE
WHEN newRead-preRead <= 20 THEN (newRead-preRead)*FR
WHEN newRead-preRead <= 30 THEN 20*FR + (newRead-preRead-100)*SR
WHEN newRead-preRead > 40 THEN 20*FR + 30*SR + ((newRead-previousRead)-50)*TR
END as Consumption
FROM reading R, svcaddress S, electricmeter W, customer C, rate A, nonresrate B, penRate P, bill bl
WHERE W.electricmeterID = S.electricmeterID
AND R.electricmeterID = W.electricmeterID
AND A.rateID = S.rateID
AND B.rateID = A.rateID
AND C.customerID = S.customerID
AND C.customerID = bl.customerID
AND R.readingID = bl.readingID
AND P.preRateID = C.preRateID
AND C.customerType = 'NonResidential'
AND r.datevisited >= TO_DATE('01-05-2013','DD-MM-YYYY')
AND r.datevisited < TO_DATE('31-08-2013','DD-MM-YYYY')
)where newRead is not null;
Je pense que c'est probablement ce que l'OP veut . CASE/WHEN peut être utilisé en PL/SQL mais comme il a utilisé des alias, je parie que c'est SQL qu'il veut. – toddlermenot
merci pour la réponse rapide, j'ai déjà édité la question pour montrer ma requête complète. comme quoi toddlermenot a dit que je suis en train d'utiliser SQL. La sous-requête fonctionne-t-elle toujours? – user3856751
@ user3856751, oui, bien qu'il semble que vous pouvez déplacer la partie 'ConsumptionBill' dans votre sous-requête existante sans en créer de nouveaux. –