如何使用第二个子选择中第一个子选择的END_DATE / START_DATE?提供的值仅为示例。 (06/01/2010)。
SELECT "PROJECT"."ID",
"PROJECT"."CLIENT",
"PROJECT"."NAME",
"PROJECT"."STATE",
"PROJECT"."EARLIEST_START",
"PROJECT"."LATEST_END",
"PROJECT"."EFFORT",
"PROJECT"."LINK",
"PROJECT"."STATUS",
"PROJECT"."DESCRIPTION",
(SELECT SUM((END_DATE - START_DATE + 1) * (WORKLOAD / 100))
FROM WORKITEM WHERE PROJECT = PROJECT.ID
) AS "P_A",
(SELECT COUNT(*)
FROM PUBLIC_HOLIDAY
WHERE HOLIDAY_DATE BETWEEN TO_DATE('06/1/2010','MM/DD/YYYY') AND
TO_DATE('06/2/2010','MM/DD/YYYY')) AS P_B,
"PROJECT_STATE"."STATE",
"PERSON"."DISPLAY_NAME" AS "RESPONSIBLE"
FROM "PROJECT"
INNER JOIN "PROJECT_STATE" ON PROJECT.STATE = PROJECT_STATE.ID
INNER JOIN "PERSON" ON RESPONSIBLE = PERSON.ID
WHERE (PROJECT.CLIENT = '1') AND (PROJECT.STATE = 1)
ORDER BY "PROJECT"."NAME" ASC
答案 0 :(得分:1)
以下是在多个地方使用start_date和end_date的一种方法
with (select to_date('06/01/2010','MM/DD/YYYY') as start_date,
to_date('06/02/2010','MM/DD/YYYY') as end_date
from dual) as q1
select project.id,
project_state.state,
q1.start_date,
q1.end_date,
(SELECT SUM((q1.END_DATE - q1.START_DATE + 1) * (WORKLOAD / 100))
FROM WORKITEM WHERE PROJECT = PROJECT.ID) AS P_A
from project
join project_state on project_state.id = project.state
join q1 on 1=1
答案 1 :(得分:0)
你做不到。 您可以使用连接从两者中创建单个子选择,并将新的复合子选择从SELECT部分移动到主查询的FROM部分。
答案 2 :(得分:0)
这就是你要找的东西
SELECT "PROJECT"."ID",
"PROJECT"."CLIENT",
"PROJECT"."NAME",
"PROJECT"."STATE",
"PROJECT"."EARLIEST_START",
"PROJECT"."LATEST_END",
"PROJECT"."EFFORT",
"PROJECT"."LINK",
"PROJECT"."STATUS",
"PROJECT"."DESCRIPTION",
(SELECT SUM((END_DATE - START_DATE + 1) * (WORKLOAD / 100))
FROM WORKITEM WHERE PROJECT = PROJECT.ID
) AS "P_A",
(SELECT COUNT(*)
FROM PUBLIC_HOLIDAY
WHERE HOLIDAY_DATE BETWEEN NVL(END_DATE,SYSDATE) AND
NVL(START_DATE,SYSDATE)) AS P_B,
"PROJECT_STATE"."STATE",
"PERSON"."DISPLAY_NAME" AS "RESPONSIBLE"
FROM "PROJECT"
INNER JOIN "PROJECT_STATE" ON PROJECT.STATE = PROJECT_STATE.ID
INNER JOIN "PERSON" ON RESPONSIBLE = PERSON.ID
LEFT JOIN "WORKITEM" ON WORKITEM.PROJECT = WORKITEM.ID
WHERE (PROJECT.CLIENT = '1') AND (PROJECT.STATE = 1)
ORDER BY "PROJECT"."NAME" ASC