假设我有三个这样的表:
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
cols。GETDATE() 未来的所有值都将采用TABLE_Z
cols。
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 中的某些地方缺少它们。