2016-06-22 2 views
1

DATEDIFF/케이스 문

select 'Admit '+cast **(DATEDIFF(day,(case when Sc.AppointmentDateTime is null then Ws.EndTime else Sc.AppointmentDateTime end),sp.AdmissionDateTime) as varchar)+' day(s) later; ' AS 'data()'** 
from WHREPORTING.APC.Spell sp 
where sp.AdmissionDate>='01 jan 2016' 

가 지금은 굵게 표시된 부분은 같은이 날짜의 DATEDIFF을 제공합니다 생각 (이것은 내가 편집해야 더 긴 코드의 일부입니다) 아래의 쿼리를 참조하십시오 그림. 출력은 다음과 같습니다 ..

는 "나중에 일일 (들)을 인정;"

을 내가 어떻게 든 출력이 1 ~ 2 일 후인지를 지정하거나 2 - 할 일은 노력하고 있어요 -14 일 후. 그 말이 맞는다면? 따라서 숫자가 5 인 경우 "나중에 2-14 일을 인정합니다"라고 말합니다.

어떻게 든 중첩 된 다른 사례 문이 필요할까요?

정말 감사드립니다.

+0

사용 : 선택 CONCAT ('damit **', DATEDIFF ...) –

+0

CONCAT을 어떻게 사용합니까? (죄송합니다. 저는 SQL에 비교적 익숙하지 않습니다.) – jd8766

답변

0

다음과 같이 사용할 수 있습니다. CONCAT() 당신은 하나의 샘플에 'Admit **'+ (결과는 DATEDIFF (...) + '다음 날짜', AS 'data()'

SELECT 
    CONCAT (
    'Admit ** ' 
    , DATEDIFF(DAY,(CASE WHEN Sc.AppointmentDateTime IS NULL THEN Ws.EndTime ELSE Sc.AppointmentDateTime END)) 
    , ' day(s) later; ' AS 'data()' 
) AS `data` 
    FROM WHREPORTING.APC.Spell sp 
WHERE sp.AdmissionDate>='01 jan 2016';