0

MS Access 2010 データベースに次のテーブルがあります。

CommTable  
    pkID  
    fkID  
    Level  
    type1Date  
    type2Date  

fkID の特定の値に対して、Level と 2 つの日付フィールドの最も早い値を選択する必要があります。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 に答える