Ich versuche, die folgende Abfrage neu schreiben, da ich nicht so viele Fensterfunktionen verwenden möchte. Gibt es eine Möglichkeit, die folgende Logik neu zu schreiben? Bisher habe ich versucht, temporäre Tabellen zu erstellen und Jonins zu verwenden, aber das hat nicht viel geholfen.Abfrage überschreiben Logik
SELECT a.*
FROM (
SELECT F.DT_KEY AS DT_KEY
,F.COL_KEY AS COL_KEY
,F.PCK_ITM_KEY AS PCK_ITM_KEY
,F.KEY3 AS KEY3
,F.KEY4 AS KEY4
,F.KEY1 AS KEY1
,F.KEY2 AS KEY2
,F.KEY3 AS KEY3
,F.SH_QTY AS SH_QTY
,SUM(F.SLS_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS SLS_QTY
,SUM(F.SLS_RTRN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS SLS_RTRN_QTY
,SUM(F.PCHSE_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS PCHSE_QTY
,SUM(F.ADJ_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS ADJ_QTY
,SUM(F.SED_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS SED_QTY
,SUM(F.RTV_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS RTV_QTY
,SUM(F.PRN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS PRN_QTY
,SUM(F.ML_IN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS ML_IN_QTY
,SUM(F.ML_OUT_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS ML_OUT_QTY
,SUM(F.BK_ML_IN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS BK_ML_IN_QTY
,SUM(F.BK_ML_OUT_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS BK_ML_OUT_QTY
,SUM(F.INT_COMP_IN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS INT_COMP_IN_QTY
,SUM(F.INT_COMP_OUT_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS INT_COMP_OUT_QTY
,SUM(F.ML_RCPT_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS ML_RCPT_QTY
,SUM(F.RCPT_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS RCPT_QTY
,SUM(F.STCK_ADJ_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS STCK_ADJ_QTY
,SUM(F.WHSL_SLS_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS WHSL_SLS_QTY
,SUM(F.WH_RTRN_QTY) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS WH_RTRN_QTY
,SUM(F.NET_SLS_AMT) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS NET_SLS_AMT
,SUM(F.NET_WH_SLS_AMT) OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
) AS NET_WH_SLS_AMT
,F.IN_TRNST_QTY AS IN_TRNST_QTY
,F.LST_RCVD_QTY AS LST_RCVD_QTY
,F.LST_SLD_QTY AS LST_SLD_QTY
,MIN(F.FRST_RCVD_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS FRST_RCVD_DT
,MAX(F.LST_RCVD_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS LST_RCVD_DT
,MAX(F.LST_LST_RCVD_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS LST_LST_RCVD_DT
,MIN(F.FRST_SLD_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS FRST_SLD_DT
,MAX(F.LST_SLD_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS LST_SLD_DT
,MIN(F.FRST_ML_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS FRST_ML_DT
,MAX(F.LST_ML_DT) OVER (
PARTITION BY F.KEY1
,F.KEY3
) AS LST_ML_DT
,F.LST_MODFD_DTTM AS LST_MODFD_DTTM
,ROW_NUMBER() OVER (
PARTITION BY F.KEY4
,F.KEY1
,F.KEY2
,F.KEY3
,F.COLE ORDER BY F.DT_KEY DESC
) AS RNK
FROM FCT_ITEM_KEY F
) a
WHERE a.RNK = 1;
Funktioniert das ** du **? Sie sehen sich den Code von jemand anderem an und beginnen ihn zu ändern, ohne zu fragen "Wie sehen die Eingabedaten aus?", "Was ist die Anforderung" und "Wie sollte die Ausgabe aussehen?" Wenn ja, möchte ich nicht, dass Sie an meinem Code arbeiten. Wenn nicht (was sehr wahrscheinlich ist), warum erwarten Sie, dass wir so arbeiten? Bitte zeigen Sie, was die Eingaben sind, was die Anforderung ist und was die Ausgabe sein soll. Fordern Sie uns nicht auf, zu "erraten", indem Sie nur den Code lesen - so sollten solche Dinge nicht gemacht werden. – mathguy
@mathguy Ich bin sehr neu in diesem Forum. Vielen Dank für Ihren Vorschlag. Ich werde Beispieldaten hinzufügen. – ciprian
Hallo Ciprian, - Sie könnten dies nützlich finden (wenn Sie Zeit haben). http://StackOverflow.com/Help Und vor allem http://StackOverflow.com/Help/Mcve – mathguy