帮助这个JET Sql Query

时间:2010-06-17 14:26:58

标签: sql ms-access select jet

我需要帮助才能执行此查询选择。

例如我有这些字段:

  • idInvoice
  • 日期
  • 金额

根据日期,我需要将字段“金额”乘以x号或其他字段。

例如,如果日期小于01/01/2010,则乘以20。但是如果它是主要的或等于乘以35

Select idInvoice, date, amount, amount * varNumber from invoices

3 个答案:

答案 0 :(得分:1)

假设您的日期字段不允许空值,您应该可以使用IIf表达式进行计算。

SELECT
    idInvoice,
    [date],
    amount,
    IIf([date] < #2010/01/01#, amount * 20, amount * 30) AS extended_amount
FROM invoices;

注意我将日期字段名称括在方括号中,因为date是Access中的保留字。方括号表示数据库引擎需要名为“date”的字段而不是Date()函数。

访问日期字段还包括时间组件。因此,对于今年年初午夜之前的任何值,查询将多次20。这意味着2010年1月1日凌晨1点,金额将乘以30.如果这不是您想要的,请更改IIf表达式。

如果您的[date]字段允许Null,请查看N'()函数的Access'帮助。

答案 1 :(得分:1)

SELECT 
    idInvoice, 
    [date], 
    amount, 
    amount *IIf([date] < #2010/01/01#, 20, 30) AS extended_amount 
FROM invoices; 

答案 2 :(得分:-1)

Select idInvoice, date, amount, 
amount * case when date<'20100101' then 20 else 35 end as amount from invoices