在 Microsoft Access 中使用 CASE WHEN 语句
using CASE WHEN statements in Microsoft Access
我知道如何编写 CASE WHEN
语句,但这里的问题是将它们翻译成 Microsoft Access“语言”。
我已经尝试使用 IF
语句但它没有用,我已经查找了如何在 Access 中使用 CASE WHEN
语句但是复制我发现的内容不起作用,我很无能..
以下是我应该翻译的代码:
SELECT clienti.nome, clienti.cognome
FROM ((clienti
INNER JOIN contiCorrenti ON clienti.ID = contiCorrenti.IDCliente)
INNER JOIN prestiti ON contiCorrenti.IBAN = prestiti.IBAN)
WHERE prestiti.durata <
CASE WHEN prestiti.rateizzazione = "mensile"
THEN 60
WHEN prestiti.rateizzazione = "annuale"
THEN 5
ELSE 0
END;
Access 不支持 SQL 中的 CASE - 使用 IIf()
或 Choose()
或 Switch()
.
durata < IIf(rateizzazione = "mensile", 60, IIf(rateizzazione = "annuale", 5, 0))
或
durata < Switch(rateizzazione = "mensile, 60, rateizzazione = "annuale", 5, True, 0)
Switch()
和 Choose()
是 VBA 内部函数调用,但 IIf() 是 SQL,因此执行效率可能更高。
MS Access 不支持 case 语句。相反,您可以使用“立即 if”函数 (iif) 并针对多个条件嵌套它们:
where prestiti.durata < iif (prestiti.rateizzazione = "mensile", 60,
iif (prestiti.rateizzazione = "annuale", 5, 0))
我知道如何编写 CASE WHEN
语句,但这里的问题是将它们翻译成 Microsoft Access“语言”。
我已经尝试使用 IF
语句但它没有用,我已经查找了如何在 Access 中使用 CASE WHEN
语句但是复制我发现的内容不起作用,我很无能..
以下是我应该翻译的代码:
SELECT clienti.nome, clienti.cognome
FROM ((clienti
INNER JOIN contiCorrenti ON clienti.ID = contiCorrenti.IDCliente)
INNER JOIN prestiti ON contiCorrenti.IBAN = prestiti.IBAN)
WHERE prestiti.durata <
CASE WHEN prestiti.rateizzazione = "mensile"
THEN 60
WHEN prestiti.rateizzazione = "annuale"
THEN 5
ELSE 0
END;
Access 不支持 SQL 中的 CASE - 使用 IIf()
或 Choose()
或 Switch()
.
durata < IIf(rateizzazione = "mensile", 60, IIf(rateizzazione = "annuale", 5, 0))
或
durata < Switch(rateizzazione = "mensile, 60, rateizzazione = "annuale", 5, True, 0)
Switch()
和 Choose()
是 VBA 内部函数调用,但 IIf() 是 SQL,因此执行效率可能更高。
MS Access 不支持 case 语句。相反,您可以使用“立即 if”函数 (iif) 并针对多个条件嵌套它们:
where prestiti.durata < iif (prestiti.rateizzazione = "mensile", 60,
iif (prestiti.rateizzazione = "annuale", 5, 0))