複数の列から最終日付を取得する 質問する

複数の列から最終日付を取得する 質問する

これは簡単なように思えます。異なる列にある最新の日付を取得するにはどうすればいいでしょうか

DROP TABLE #indebtedness
CREATE TABLE #indebtedness (call_case CHAR(10), date1 DATETIME, date2 DATETIME, date3 DATETIME)
INSERT #indebtedness VALUES ('Key1', '2019-10-30', '2019-11-30', '2019-10-25')
INSERT #indebtedness VALUES ('Key2', '2019-10-20', '2019-10-30', '2019-10-15')
INSERT #indebtedness VALUES ('Key3', '2019-11-11', '2019-10-29', '2019-10-30')
INSERT #indebtedness VALUES ('Key4',     null    , '2019-10-29', '2019-10-13')

select call_case, ?? AS 'Latest Date' from #indebtedness 

次のような結果が期待されます:

call_case   Latest Date
Key1        2019-11-30 
Key2        2019-10-30 
Key3        2019-11-11 
Key4        2019-10-29 

ベストアンサー1

式を使用しますCASE:

SELECT
    call_case,
    CASE WHEN date1 > date2 AND date1 > date3
         THEN date1
         WHEN date2 > date3
         THEN date2
         ELSE date3 END AS [Latest Date]
FROM #indebtedness;

デモ

MySQL、SQL Server、SQLite などの一部のデータベースはスカラー最大関数をサポートしていることに注意してください。SQL Server はサポートしていないため、CASE回避策として式を使用できます。

編集:

実際のテーブルでは、3 つの日付列のうち 1 つ以上にNULL値がある可能性があります。上記のクエリを次のように変更することができます。

SELECT
    call_case,
    CASE WHEN (date1 > date2 OR date2 IS NULL) AND (date1 > date3 OR date3 IS NULL)
         THEN date1
         WHEN date2 > date3 OR date3 IS NULL
         THEN date2
         ELSE date3 END AS [Latest Date]
FROM #indebtedness;

デモ

おすすめ記事