代码之家  ›  专栏  ›  技术社区  ›  opHASnoNAME

ORACLE中的SQL Where子句

  •  1
  • opHASnoNAME  · 技术社区  · 14 年前

    如何使用第二个子选项中第一个子选项的结束日期/开始日期?提供的值只是示例(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
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   kicsit    14 年前

    你不能。

        2
  •  1
  •   coop    14 年前

    这里有一种方法可以在多个地方使用开始日期和结束日期

    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  
    
        3
  •  0
  •   Bharat    14 年前

        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