我有一张表
Name EnteredDateID RecvdDateID
A 20140901 20240901
B 20140901 20140901
C 20140901 20140901
D 20140901 20140901
E 20140901 20110901
F 20140901 20140901
G 20140901 20110901
我需要编写一个可以执行以下操作的查询
SELECT * FROM TABLEA WHERE
这就是我摔倒的地方
IF RecvdDateID > GETDATE() THEN USE
EnteredDateID > 20140630
ELSE USE THE
RecvdDateID > 20140630
所以我最终会以
结束Name EnteredDateID RecvdDateID
A 20140901 20240901
B 20140901 20140901
C 20140901 20140901
D 20140901 20140901
F 20140901 20140901
答案 0 :(得分:1)
您可以使用
SELECT * FROM TABLEA WHERE
20140630 <
CASE WHEN RecvdDateID > GETDATE() THEN
EnteredDateID
ELSE
RecvdDateID
END
答案 1 :(得分:0)
SELECT *
FROM TABLEA
WHERE (RecvdDateID > GETDATE() AND EnteredDateID > 20140630)
OR (RecvdDateID <= GETDATE() AND RecvdDateID > 20140630)
答案 2 :(得分:0)
或者只是为了简化生活,您可以使用用户定义的函数并在查询中使用它:
SELECT *
FROM TABLEA
WHERE dbo.MyCriteriaMatches(RecvdDateID,EnteredDateId) =1
你可以创建一个函数MyCriteriaMatches
,你可以在上面突出显示的情况下返回1,否则返回0。
希望这有帮助。