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"
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen fehlen
SELECT ... FROM
an den start. DieAS
Schlüsselwort funktioniert nur beim erstellen der Spalte Aliase, keine query-block-Aliase. Anführungszeichen sind nur notwendig für groß- /Kleinschreibung von Spaltennamen - Sie sehen nicht falsch, in deinem Beispiel, aber Sie sind Häufig Ursache für Fehler.InformationsquelleAutor Mark Byers