Das verbinden von zwei SELECT-Anweisungen mit Outer Join mit mehreren alias

Ich habe eine komplizierte select-Anweisung, die, wenn Sie ausgeführt wird, ich geben Sie ein Datum oder einen Zeitraum will ich und die Ausgabe kommt heraus. Das problem ist, ich weiß nicht, wie Sie Mitglied der gleichen SQL-Anweisung mit der ersten Anweisung mit 1 Zeitraum und die zweite Aussage, mit einem anderen Datenbereich. Beispiel unten:

Wenn ich die select-Anweisung ausgeführt wird, wähle ich für den Monat November:

EMPLID NAMEN Current_Gross_Hours(November)

Wenn ich die select-Anweisung ausgeführt wieder, wähle ich von Januar bis November:

EMPLID NAMEN Year_To_Date_Hours(Januar - November)

Was ich will:

EMPLID NAMEN Current_Gross_Hours(November) Year_To_Date_Hours(Januar - November)

Die SQL-Select-Anweisung korrekt ausgeführt wird, wenn execute von selbst. Aber ich weiß nicht, wie sich Ihnen anzuschließen.
Hier ist der SQL code, den ich schreiben möchte, aber ich weiß nicht, wie zu schreiben der SQL-Anweisung korrekt ist. Jede Hilfe oder Richtung, wird sehr geschätzt.

(SELECT DISTINCT
SUM("PSA"."AL_HOURS") AS "Current Gross Hours", "PSJ"."EMPLID","PSP"."NAME"
FROM
"PS_JOB" "PSJ", "PS_EMPLOYMENT" "PSE", "PS_PERSONAL_DATA" "PSP", "PS_AL_CHK_HRS_ERN" "PSA"
WHERE
((("PSA"."CHECK_DT" = TO_DATE('2011-11-01', 'YYYY-MM-DD')) AND
("PSJ"."PAYGROUP" = 'SK2') AND
(("PSJ"."EFFSEQ"= ( 
    SELECT MAX("INNERALIAS"."EFFSEQ")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" = "PSJ"."EFFDT")
AND
"PSJ"."EFFDT" = ( 
    SELECT MAX("INNERALIAS"."EFFDT")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" <= SYSDATE))))) 
AND
("PSJ"."EMPLID" = "PSE"."EMPLID" ) AND ("PSJ"."EMPLID" = "PSP"."EMPLID" ) AND ("PSJ"."FILE_NBR" = "PSA"."FILE_NBR" ) AND ("PSJ"."PAYGROUP" = "PSA"."PAYGROUP" ) AND ("PSE"."EMPLID" = "PSP"."EMPLID" )
GROUP BY
"PSJ"."EMPLID", "PSP"."NAME"
) AS "Q1"

LEFT JOIN


(SELECT DISTINCT
SUM("PSA"."AL_HOURS") AS "YEAR_TO_DATE Gross Hours", "PSJ"."EMPLID"
FROM
"PS_JOB" "PSJ", "PS_EMPLOYMENT" "PSE", "PS_PERSONAL_DATA" "PSP", "PS_AL_CHK_HRS_ERN" "PSA"
WHERE
((("PSA"."CHECK_DT" BETWEEN TO_DATE('2011-01-01', 'YYYY-MM-DD') AND TO_DATE('2011-11-01', 'YYYY-MM-DD'))  AND
("PSJ"."PAYGROUP" = 'SK2') AND
(("PSJ"."EFFSEQ"= ( 
    SELECT MAX("INNERALIAS"."EFFSEQ")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" = "PSJ"."EFFDT")
AND
"PSJ"."EFFDT" = ( 
    SELECT MAX("INNERALIAS"."EFFDT")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" <= SYSDATE))))) 
AND
("PSJ"."EMPLID" = "PSE"."EMPLID" ) AND ("PSJ"."EMPLID" = "PSP"."EMPLID" ) AND ("PSJ"."FILE_NBR" = "PSA"."FILE_NBR" ) AND ("PSJ"."PAYGROUP" = "PSA"."PAYGROUP" ) AND ("PSE"."EMPLID" = "PSP"."EMPLID" )
GROUP BY
"PSJ"."EMPLID"
) AS "Q2"
 ON "Q1"."EMPLID"="Q2"."EMPLID"
ORDER BY
"Q1"."NAME"
Noch nie gehört über ANZEIGEN?
Die SQL sind Sie mit... MySQL, SQL Server, Oracle???
Ich bin mir nicht sicher, ob ich tun kann, ANZEIGEN. Ich glaube, ich bin nur Abfrage nur den Zugriff. Ich werde versuchen, ANZEIGEN und sehen, was passiert. SQL ist ORACLE

InformationsquelleAutor user1048616 | 2011-11-15

Schreibe einen Kommentar