【发布时间】:2012-12-18 05:03:59
【问题描述】:
假设我有一个来源,我必须像这样查询:
Select Fields
from TableA A
join TableB B on A.SomeField = B.SomeField
join TableC C on B.SomeField = C.SomeField
Join TableD D on C.SomeField = D.SomeField
Where
CustomMaxDateFunction (A.SomeDateField, B.SomeDateField, C.SomeDateField, D.SomeDateField) > '20130101 23:59:00'
我知道我可以将 where 子句写成如下内容,但我不想这样做:
Where
A.SomeDateField > '20130101 23:59:00'
OR B.SomeDateField > '20130101 23:59:00'
OR C.SomeDateField > '20130101 23:59:00'
OR D.SomeDateField > '20130101 23:59:00'
请记住,要比较的列数会根据连接中源表的数量而变化。
由于我们将不得不重复使用自定义函数(或存储过程),所以关于最简单的方法的任何建议。
【问题讨论】:
-
我知道这是一个示例查询 - 但
Join TableD D on A.SomeField = B.SomeField不对。 -
哎呀,你是对的。对不起,我正在复制和粘贴。我会解决的。
标签: sql-server tsql stored-procedures user-defined-functions sql-server-2012