2017-03-23 1 views
2

SQL Server 2012를 사용하고 있으며 현재 두 날짜 간의 날짜 차이를 묻는 보고서를 작성하고 있습니다. SQL Server : 별도의 행에 두 날짜가있는 일의 차이가

은 기본적으로 특정 ReportID, 나는합니다 ( ReportType = 'PaperReceived'ReportCompletedDate) 사이 일의 차이를 발견하기 위해 노력하고있어 - ( ReportCompletedDateReportType = 'Form Completed' 경우)

나는 다음과 같은 몇 가지 기록을 주려고 노력 ...

ReportID ReportType  ReportCompletedDate 
------------------------------------------------- 
450  PaperReceived  9/5/2013 
450  Form Completed  8/13/2013 
451  PaperReceived  9/7/2013 
451  Form Completed  7/12/2013 
452  PaperReceived  10/6/2013 
452  Form Completed  3/13/2013 

따라서, 예를 들어 ReportID = 450, 나는 일 9/5/2013 - 8/13/2013을 싶어.

누구나 달력 일과 영업일에이를 수행하는 방법을 알고 있다면 그것은 최고 일 것입니다. 그러나 최소한 달력 일은 잘되어야합니다.

두 가지 날짜가 일렬로 정렬되어있을 때 대개 어떻게해야할지 모르겠지만 날짜를 구분하는 것이 쉽지만 날짜가 별도의 행에있을 때는 어떻게해야하는지 잘 모릅니다. 어떤 조언도 기꺼이 감사하겠습니다.

답변

2

셀프 조인을 통해 "한 줄"로 표시 할 수 있습니다. 이처럼 :

SELECT DateDiff(day,BASE.ReportCompleteDate, FORM.ReportCompleteDate) as Diff 
FROM TABLE_NAME_YOU_DID_NOT_SAY BASE 
LEFT JOIN TABLE_NAME_YOU_DID_NOT_SAY FORM ON BASE.ReportId = FORM.ReportID AND FORM.ReportType = 'Form Completed' 
WHERE BASE.ReportType = 'PaperRecieved' 
+1

당신은 DATEDIFF 문 –

+1

@AbdullahDibas 덕분에 '일'로 날짜 부분을 추가해야 할 수도 있습니다 ... 접근 방식 중 하나를 검색 - 그래 오랜만 내가 datediff를 사용했기 때문에 – Hogan

+0

@Hogan 고마워,이게 내가 필요한거야 !! 또한 압둘라 (Abdullah). – smul86

2

SELECT RCVD.REPORTID 
    , DATEDIFF(DAY, RCVD.REPORTCOMPLETEDDATE, CMPLD.REPORTCOMPLETEDDATE) DAY_DIFF 
FROM (
    SELECT REPORTID 
     , REPORTCOMPLETEDDATE 
    FROM REPORTS 
     WHERE REPORTTYPE = 'PaperReceived' 
) RCVD 
    JOIN (
    SELECT REPORTID 
     , REPORTCOMPLETEDDATE 
    FROM REPORTS 
     WHERE REPORTTYPE = 'Form Completed' 
) CMPLD 
    ON RCVD.REPORTID = CMPLD.REPORTID 
+0

달력 일 대신 엄격하게 업무 일을 처리하기 위해이 방법을 채택 할 수 있습니까? – smul86

관련 문제