Ich versuche 3 Ergebnisse von 3 verschiedene Anforderungen auf dem gleichen Tisch zu setzen:Wie innere Verknüpfung mit 3 Anfrage auf dem gleichen Tisch
Meine Tabelle:
TB_DW_CA_DETAIL_AGG
DATE_VOL
NUMERO_VOL
CODE_CLIENT
SITE_PROD
CODE_CLASSE
STATUT_FIAB
CENTRE_PROFIT
TYPE_CA
MONTANT_QUOD
MONTANT_RISTOURNE
MONTANT_AN
MONTANT_TOT_QUOD
MONTANT_TOT_MENS
MONTANT_TOT_AN
DATE_CHGT
Meine Anfrage:
SELECT * FROM (
SELECT
TB_DW_CA_DETAIL_AGG.DATE_VOL AS DATE_VOL,
TB_DW_CA_DETAIL_AGG.NUMERO_VOL,
TB_DW_CA_DETAIL_AGG.CODE_CLIENT,
TB_DW_CA_DETAIL_AGG.SITE_PROD,
TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT,
sum(TB_DW_CA_DETAIL_AGG.MONTANT_QUOD),
TB_DW_CA_DETAIL_AGG.STATUT_FIAB,
sum(TB_DW_CA_DETAIL_AGG.MONTANT_RISTOURNE)
FROM
TB_DW_CA_DETAIL_AGG
WHERE
(
TB_DW_CA_DETAIL_AGG.DATE_VOL <= trunc(sysdate)-2
AND
TO_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'MM')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'DD')) = '1' OR TO_NUMBER(TO_CHAR(sysdate,'DD')) = '2' THEN TO_NUMBER(TO_CHAR(sysdate,'MM'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'MM'))
END
AND
To_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'SYYYY')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'MM')) = '1' THEN TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))
END
AND
TB_DW_CA_DETAIL_AGG.SITE_PROD <> 'LAT'
)
GROUP BY
TB_DW_CA_DETAIL_AGG.DATE_VOL, TB_DW_CA_DETAIL_AGG.NUMERO_VOL, TB_DW_CA_DETAIL_AGG.CODE_CLIENT, TB_DW_CA_DETAIL_AGG.SITE_PROD, TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT, TB_DW_CA_DETAIL_AGG.STATUT_FIAB
ORDER BY TB_DW_CA_DETAIL_AGG.DATE_VOL ASC
) CTE1
INNER JOIN (
select * FROM
(
SELECT
-- TO_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'MM')),
TB_DW_CA_DETAIL_AGG.DATE_VOL AS DATE_VOL,
TB_DW_CA_DETAIL_AGG.NUMERO_VOL,
TB_DW_CA_DETAIL_AGG.CODE_CLIENT,
TB_DW_CA_DETAIL_AGG.SITE_PROD,
TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT,
sum(TB_DW_CA_DETAIL_AGG.MONTANT_QUOD),
TB_DW_CA_DETAIL_AGG.STATUT_FIAB
FROM
TB_DW_CA_DETAIL_AGG
WHERE
(TB_DW_CA_DETAIL_AGG.STATUT_FIAB=2 )
AND
(
TB_DW_CA_DETAIL_AGG.DATE_VOL <= trunc(sysdate)-2
AND
TO_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'MM')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'DD')) = '1' OR TO_NUMBER(TO_CHAR(sysdate,'DD')) = '2' THEN TO_NUMBER(TO_CHAR(sysdate,'MM'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'MM'))
END
AND
To_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'SYYYY')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'MM')) = '1' THEN TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))
END
AND
TB_DW_CA_DETAIL_AGG.SITE_PROD <> 'LAT'
)
GROUP BY
-- TO_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'MM')),
TB_DW_CA_DETAIL_AGG.DATE_VOL,
TB_DW_CA_DETAIL_AGG.NUMERO_VOL,
TB_DW_CA_DETAIL_AGG.CODE_CLIENT,
TB_DW_CA_DETAIL_AGG.SITE_PROD,
TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT,
TB_DW_CA_DETAIL_AGG.STATUT_FIAB
)CTE2
INNER JOIN(
SELECT
TB_DW_CA_DETAIL_AGG.DATE_VOL AS DATE_VOL,
TB_DW_CA_DETAIL_AGG.NUMERO_VOL,
TB_DW_CA_DETAIL_AGG.CODE_CLIENT,
TB_DW_CA_DETAIL_AGG.SITE_PROD,
TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT,
sum(TB_DW_CA_DETAIL_AGG.MONTANT_QUOD),
TB_DW_CA_DETAIL_AGG.STATUT_FIAB
FROM
TB_DW_CA_DETAIL_AGG
WHERE
(TB_DW_CA_DETAIL_AGG.STATUT_FIAB=1 )
AND
(
TB_DW_CA_DETAIL_AGG.DATE_VOL <= trunc(sysdate)-2
AND
TO_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'MM')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'DD')) = '1' OR TO_NUMBER(TO_CHAR(sysdate,'DD')) = '2' THEN TO_NUMBER(TO_CHAR(sysdate,'MM'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'MM'))
END
AND
To_NUMBER(TO_CHAR(TB_DW_CA_DETAIL_AGG.DATE_VOL,'SYYYY')) = CASE WHEN TO_NUMBER(TO_CHAR(sysdate,'MM')) = '1' THEN TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))-1
ELSE TO_NUMBER(TO_CHAR(sysdate,'SYYYY'))
END
AND
TB_DW_CA_DETAIL_AGG.SITE_PROD <> 'LAT'
)
GROUP BY
TB_DW_CA_DETAIL_AGG.DATE_VOL, TB_DW_CA_DETAIL_AGG.NUMERO_VOL, TB_DW_CA_DETAIL_AGG.CODE_CLIENT, TB_DW_CA_DETAIL_AGG.SITE_PROD, TB_DW_CA_DETAIL_AGG.CODE_CLASSE,
TB_DW_CA_DETAIL_AGG.CENTRE_PROFIT, TB_DW_CA_DETAIL_AGG.STATUT_FIAB
ORDER BY
TB_DW_CA_DETAIL_AGG.DATE_VOL) CTE3
ON CTE2.DATE_VOL = CTE3.DATE_VOL) CTE4
ON CTE1.DATE_VOL=CTE4.DATE_VOL;
Das Problem ist: Ich weiß nicht, wie ich meine beiden Gruppen CTE1 & CTE4 beitreten. (Am Ende meiner Anfrage)
ON CTE2.DATE_VOL = CTE3.DATE_VOL) CTE4
ON CTE1.DATE_VOL=CTE4.DATE_VOL;
Weitere Informationen:
Der einzige Unterschied zwischen diesen drei Anfragen ist:
(TB_DW_CA_DETAIL_AGG.STATUT_FIAB=2 )
in der WHERE-Bedingung, die für mich ein anderes Ergebnis ergibt: sum(TB_DW_CA_DETAIL_AGG.MONTANT_QUOD)
ich möchte für die gleiche beizutreten:
DATE_VOL
NUMERO_VOL
CODE_CLIENT
SITE_PROD
CODE_CLASSE
STATUT_FIAB
CENTRE_PROFIT
das Ergebnis sum(TB_DW_CA_DETAIL_AGG.MONTANT_QUOD)
mit
(TB_DW_CA_DETAIL_AGG.STATUT_FIAB=2 )
UND(TB_DW_CA_DETAIL_AGG.STATUT_FIAB=1 )
UND ohne diese Bedingung.
- CTE1 ist mein größter Wunsch (bekam alle Flüge)
- CTE4 = CTE2 & CTE3
- CTE1 = NO ZUSTAND AUF STATUT_FIAB
- CTE2 = (TB_DW_CA_DETAIL_AGG.STATUT_FIAB = 2)
- CTE3 = (TB_DW_CA_DETAIL_AGG.STATUT_FIAB = 1)
Vielen Dank für weitere Informationen.
Können Sie näher erläutern, was DATE_VOL ist und welche Flüge Sie suchen? – fafl
DATE_VOL ist das Datum meines Fluges. Ich möchte alle Flüge im Endergebnis haben – devicz
Könntest du nicht einfach CTE1 mit CTE2 und CTE3 beitreten? Warum brauchst du CTE4? – fafl