2013-01-22 15 views
1

내 SQL 쿼리에서 나는 CASE WHEN THEN ELSE END 조건을 사용하여 계산하는 열 값입니다. 지금 나는 내가 따라서 CASE을 사용했다 End Time - Start Time를 표시 하나 더 열을 원하는두 개의 열 사이의 차이 계산 SQL

Ticket Type Dependency Start Date    End Date    Updated By 
61423 FLM  AGS   2013-01-22 15:50:08.757 2013-01-22 18:35:50.893 Kedar S 

계산 열 및 일반 열

내 쿼리

SELECT T.Ticket [Ticket], 
     TT.TicketType [Ticket Type], 
     T.Dependency [Dependency], 
     CASE 
       WHEN (
         SELECT TOP 1 f1.UpdatedOn 
         FROM TicketTypeFollowUp AS f1 
         WHERE f1.UpdatedOn < T.UpdatedOn 
           AND f1.Ticket = 61423 
         ORDER BY f1.UpdatedOn DESC 
        ) IS NULL 
       THEN Ticket.TicketRaisedOn 
       ELSE (
         SELECT TOP 1 f1.UpdatedOn 
         FROM TicketTypeFollowUp AS f1 
         WHERE f1.UpdatedOn < T.UpdatedOn 
           AND f1.Ticket = 61423 
         ORDER BY f1.UpdatedOn DESC 
        ) 
       END [Start Date], 
     T.UpdatedOn [End Date], 
     L.EmpName [Updated By] 
FROM dbo.TicketTypeFollowUp T 
     LEFT JOIN dbo.Ticket 
       ON T.Ticket = Ticket.Code 
     LEFT JOIN dbo.TicketType TT 
       ON T.TicketType = TT.Code 
     LEFT JOIN LoginUser L 
       ON T.UpdatedBy = L.Code 
WHERE Ticket = 61423 

쿼리 결과의 차이를 찾으려면 차이를 계산할 수 없습니다.

데이터베이스 당신은 CTE 또는 파생 테이블로 현재 쿼리를 사용할 수있는 SQL 서버 2008

답변

1

입니다. 다음은 CTE를 사용한 예입니다.

;WITH CTE AS 
(
    -- your current query here 
) 
SELECT *, DATEDIFF(MINUTE,[Start Date],[End Date]) [End Time - Start Time] 
FROM CTE 
2
with lastUpdate(ticket, lastUpdate) as (
     select ticket, 
       max(updateOn) 
     from TicketTypeFollowUp 
     group by ticket) 
SELECT T.Ticket [Ticket], 
     TT.TicketType [Ticket Type], 
     T.Dependency [Dependency], 
     coalesce(lastUpdate, ticketRaisedOn) [Start Date], 
     T.UpdatedOn [End Date], 
     datediff(mi, coalesce(lastUpdate, ticketRaisedOn), T.UpdatedOn) durationMins, 
     L.EmpName [Updated By] 
FROM dbo.TicketTypeFollowUp T 
     LEFT JOIN dbo.Ticket 
       ON T.Ticket = Ticket.Code 
     LEFT JOIN dbo.TicketType TT 
       ON T.TicketType = TT.Code 
     LEFT JOIN LoginUser L 
       ON T.UpdatedBy = L.Code 
     left join lastUpdate lu on t.ticket = lu.ticket 
WHERE Ticket = 61423