2016-06-22 9 views
1

は、以下のクエリを参照してください(これは私が編集する必要が長いコードの一部です)DATEDIFF/Caseステートメント

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' 

今、私は太字の部分はとして2つの日付のDATEDIFFを引き出すと信じて数字。出力は次のようになります。..

「1日(秒)後に認める;」私がやろうとしています何

は何とか出力は、それが1〜2日後であるかどうかを指定します、または2であります-14日後。それが意味をなさえすれば?したがって、数字が5の場合、「2-14日後に承認する」と言うでしょう。

何らかの理由で別のケースステートメントが必要ですか?

本当に助けていただきありがとうございます。

+0

使用:select CONCAT( 'damit **'、DATEDIFF ...) –

+0

これを行うにはCONCATをどのように使用するのですか?(申し訳ありません。 – 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'; 
関連する問題