次のような3つのテーブルがあるとします。
TABLE_X TABLE_Y TABLE_Z
---------------------------------------
2012/1/1 a b
2012/1/2 a b
... a b
2012/3/17 a b
2012/3/18 a b
2012/3/19 a b
... a b
2012/12/22 a b
2012/12/23 a b
2012/12/24 a b
... a b
2013/1/1 a b
GETDATE()を条件として使用するビューを実行する必要があります。GETDATE()以降のすべての値は列にTABLE_Y
なります。GETDATE()の将来のすべての値は、列にTABLE_Z
なります。
view_TABLE_X_JOIN_Y_Z
---------------------
2012/1/1 a
2012/1/2 a
... a
2012/3/17 a
2012/3/18 a
2012/3/19 a
... a
2012/12/22 a
GETDATE() a
2012/12/24 b
... b
2013/1/1 b
2013/1/2 b
私が試したこと:
SELECT x.Date
,CASE WHEN GETDATE() > x.Date THEN z.Value
ELSE y.Value
END AS Value
FROM TABLE_X x
LEFT JOIN TABLE_Y y ON x.Date = y.Date
LEFT JOIN TABLE_Z z ON x.Date = z.Date
問題は、日付が完全なFK参照ではないことです。つまり、TABLE_Xの日付は完全ですが、YとZの一部の場所で欠落しています。