0

我在 MS Access 2010 数据库中有下表:

CommTable  
    pkID  
    fkID  
    Level  
    type1Date  
    type2Date  

对于给定的 fkID 值,我需要在两个日期字段中选择级别和最快的值。下面是一些关于 SQL 可能看起来的伪代码:

SELECT Level, date FROM CommTable WHERE fkID=2  
If Type1Date<Type2Date{date=Type1Date}  
Else {date=Type2Date}  

这显然不是正确的 SQL。有人可以告诉我在 MS Access SQL 中编写它的正确语法吗?

4

2 回答 2

2

提供日期字段名称的小调整

select
  Level
, iif(type1Date < type2Date, type1Date, type2Date) as [date]
from CommTable
where fkID = 2
于 2013-10-03T22:15:07.617 回答
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
于 2013-10-03T21:20:19.990 回答