我有一个复杂的select语句,当它被执行时,我给它一个我想要的日期或日期范围,并输出。问题是我不知道如何加入同一个SQL语句,第一个语句有一个日期范围,第二个语句有另一个数据范围。下面的例子:使用Outer Join和多个别名连接两个SELECT语句
当我执行SELECT语句,我选择了十一月份:
EMPLID NAME Current_Gross_Hours(十一月)
当我再次执行SELECT语句,我从一月选择十一月:
EMPLID NAME Year_To_Date_Hours(1至11月)
我想要什么:
EMPLID NAME Current_Gross_Hours(十一月)Year_To_Date_Hours(1至11月)
如果自行执行,SQL Select语句将正确运行。但我不知道如何加入他们。 这是我想写的SQL代码,但我不知道如何正确编写SQL语句。任何帮助或方向,不胜感激。
(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"
从来没有听说过VIEW? –
你正在使用哪个SQL ... MySQL,SQL Server,Oracle? – DRapp
我不确定我可以做VIEW。我想我只是给了查询访问权限。我会试着看看会发生什么。 SQL是ORACLE – user1048616