これは簡単なように思えます。異なる列にある最新の日付を取得するにはどうすればいいでしょうか
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;