我在MS Access 2010数据库中有以下表格:
CommTable
pkID
fkID
Level
type1Date
type2Date
我需要为给定的fkID值选择Level和两个日期字段中最快的值。下面是一些SQL可能是什么样的伪代码:
SELECT Level, date FROM CommTable WHERE fkID=2
If Type1Date<Type2Date{date=Type1Date}
Else {date=Type2Date}
这显然不是正确的SQL。有人能告诉我在MS Access SQL中编写它的正确语法吗?
答案 0 :(得分:2)
您可以使用Iif,但我必须承认,我不确定您是否可以将字段设为truepart
/ falsepart
select level, Iif(type1Date < type2Date, type1Date, type2Date)
FROM CommTable
WHERE fkID=2;
您也可以尝试(但同样,我无法测试它,也不确定您是否可以在子查询中使用UNION)。
select a.level, min(a.dte)
FROM
(select level, type1Date as dte
FROM CommTable WHERE fkId =2
UNION
select level, type2Date as dte
FROM CommTable WHERE fkId = 2
) as a
GROUP BY a.level
答案 1 :(得分:2)
小调整以提供日期字段名称
select
Level
, iif(type1Date < type2Date, type1Date, type2Date) as [date]
from CommTable
where fkID = 2