2012-11-08 12 views
1

아래 쿼리가 있는데 '22 -OCT-2012 AND 28-OCT-2012 '와 같은 주 범위를 지정하는 대신 CurrentWeek -2 또는 CurrentWeek와 같은 코드를 삽입해야합니다. -1, 매주 실행할 쿼리를 편집하지 않아도됩니다. 어떻게 만드는지 알고 있습니까? 나는 당신의 질문을 이해대신 날짜를 입력하는 대신

감사 LD

SELECT WO.USER_6 AS STYLE 
,SUM (CASE WHEN (OPERATION.STATUS ='C' AND OPERATION.CLOSE_DATE BETWEEN '22-OCT-2012' AND '28-OCT-2012') THEN OPERATION.RUN_HRS ELSE 0 END) WEEK43 
,SUM (CASE WHEN (OPERATION.STATUS ='C' AND OPERATION.CLOSE_DATE BETWEEN '29-OCT-2012' AND '04-NOV-2012') THEN OPERATION.RUN_HRS ELSE 0 END) WEEK44 
FROM WORK_ORDER WO, OPERATION 
WHERE WO.BASE_ID = OPERATION.WORKORDER_BASE_ID 
AND WO.Lot_ID = Operation.Workorder_Lot_ID 
     AND WO.Sub_ID = Operation.Workorder_Sub_ID 
     AND WO.Split_ID = Operation.Workorder_Split_ID 
AND WO.TYPE ='W' 
AND WO.WAREHOUSE_ID ='MEX-04' 
AND OPERATION.CLOSE_DATE BETWEEN '22-OCT-2012' AND '04-NOV-2012' 
AND OPERATION.RESOURCE_ID IN ('171-4','171-ADD','171-3' ,'BAMEX-SEWCONC','BAMEX-SEWPATC') 
AND OPERATION.RUN > 0 
GROUP BY 
WO.USER_6 
+0

에 따라 달라집니다 - 2 또는 CurrentWeek-1'? – user1819920

답변

0

경우, u는이 경우이

SUM (CASE WHEN (OPERATION.STATUS ='C' AND OPERATION.CLOSE_DATE BETWEEN to_char(trunc(sysdate),'DD-MON-YYYY') and to_char(trunc(sysdate)-6,'DD-MON-YYYY')) THEN OPERATION.RUN_HRS ELSE 0 END) WEEK43 

희망처럼이 도움이 유를

0

를 현재 주 일을 통과하려면이 옵션을 사용할 수 있습니다 trunc 기능을 사용합니다 :

currentweek will be trunc(sysdate,'D') 
current_week - 1 will be trunc(sysdate,'D') - 7 
current week - 2 will be trunc(sysdate,'D') - 2 * 7 

주목 해 주셔서 감사합니다. 당신은 당신이해야 월요일 한 일을 원하는 경우 :

current week - 2 will be trunc(sysdate,'D') - 2 * 7 + 1 

UPDATE : 프랭크 맞아,주의 첫 날의 동작은 유 CurrentWeek`에 의해 의미합니까 무엇 NLS_TERITORY

alter session set NLS_TERRITORY ='UNITED KINGDOM'; 
select trunc(sysdate,'D') from dual; 
05-11-2012 

alter session set NLS_TERRITORY ='AMERICA'; 
select trunc(sysdate,'D') from dual; 
04-11-2012 
+0

불행히도, 그보다 조금 더 복잡합니다. trunc (..., 'D')가 일요일 또는 월요일에 주를 시작하는지 여부는 NLS 설정에 따라 다릅니다. –

+0

안녕하세요 모두, 내 문제를 최선의 방법으로 설명하지는 못했지만이 코드를 바꿀 필요가 있습니다 : '22 -OCT-2012 '와 '28 -OCT-2012'사이). 예를 들어 WeeK43은 이 쿼리를 실행하면 다음 주에 쿼리를 업데이트 할 필요가 없으며 이전 주에 기반하여 실행해야합니다. 고마워 – user1807973

+0

예, trunc (sysdate, 'D') -2 * 7과 trunc (sysdate, 'D') - 7' 사이입니다. –

관련 문제