alors j'essaie de faire fonctionner une requête depuis une demi-heure maintenant et je suis désespérée. Le problème est que je veux joindre une table à ma requête que je génère dans une sous-requête. La sous-requête était censé se présenter comme suit:En utilisant un alias dans une sous-requête jointe OU en rejoignant une seule ligne dans Oracle
left join (select ACCN.*,
ROW_NUMBER() over (order by
case
when sysdate between ACCN.BDate and ACCN.EDate then 0
else 1
end, ACCN.EDate desc) as CNT
from AccountContracts ACCN
where ACCN.AccId = ACC.Id
order by case
when sysdate between ACCN.BDate and ACCN.EDate then 0
else 1
end, ACCN.EDate desc) ACN on ACN.CNT = 1
L'idée ici est que, tandis qu'un compte peut être connecté à plusieurs contrats, je veux seulement montrer soit le contrat actif (sysdate between ACCN.AcnBDate and ACCN.AcnEDate
) ou celui qui a expiré plus récemment. Par conséquent, je choisis les contrats pertinents, je les commande en conséquence, et au final, je ne prends en compte que le premier.
Toutefois, cela ne fonctionne pas car je ne peux pas référencer l'alias ACC
dans la sous-requête. Je pourrais, bien sûr, passer la clause where
à la clause on
, mais dans ce cas, l'autre condition ne produirait pas le résultat attendu.
Je soit besoin d'être en mesure de faire référence à l'alias dans mon sous-requête, choisissez seule la ligne avec le plus bas CNT
dans mon on
-clause, ou penser à un autre, une meilleure solution (qui pourrait très bien exister).
Quelqu'un peut-il vous aider?
Merci d'avance!
données d'échantillons d'exposition de votre table. –
que voulez-vous dire, spécifiquement? –
Afficher des lignes de données pour différentes colonnes impliquées. –