ms访问查询选择最快的两个日期值

时间:2013-10-03 21:14:56

标签: sql ms-access ms-access-2010

我在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中编写它的正确语法吗?

2 个答案:

答案 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