我需要帮助来做这个查询选择。帮助此JET Sql查询
,比如我有这些领域:
- idInvoice
- 日期
- 量
取决于日期我需要乘场的 “量” 对于x号码或其他人。
例如,如果日期小于01/01/2010乘以20。但如果是大或等于乘以35
Select idInvoice, date, amount, amount * varNumber from invoices
我需要帮助来做这个查询选择。帮助此JET Sql查询
,比如我有这些领域:
取决于日期我需要乘场的 “量” 对于x号码或其他人。
例如,如果日期小于01/01/2010乘以20。但如果是大或等于乘以35
Select idInvoice, date, amount, amount * varNumber from invoices
Select idInvoice, date, amount,
amount * case when date<'20100101' then 20 else 35 end as amount from invoices
我使用.net(jet sql)访问。如果运行“CASE”显示语法错误 – aco 2010-06-17 15:04:54
Jet/ACE在SQL中没有CASE语句。 – 2010-06-18 22:11:05
假设你的日期字段不允许为空,你应该能够使用I如果表达式为您计算。
SELECT
idInvoice,
[date],
amount,
IIf([date] < #2010/01/01#, amount * 20, amount * 30) AS extended_amount
FROM invoices;
注意我将方括号中的日期字段名称括起来,因为日期是Access中的保留字。方括号表示你想要一个名为“date”的字段而不是Date()函数的数据库引擎。
另外访问日期字段包括一个时间组件。因此,在今年年初之前,这个查询会比任何值多出20倍。这意味着对于凌晨1点的2010年1月1日,金额将乘以30.如果这不是您想要的,请更改IIf表达式。
如果您的[日期]字段允许为空,请查看Access对Nz()函数的帮助。
或
SELECT
idInvoice,
[date],
amount,
amount *IIf([date] < #2010/01/01#, 20, 30) AS extended_amount
FROM invoices;
解决:可以做“联盟” – aco 2010-06-17 14:58:24
它被认为是可以接受的回答你自己的问题。如果你已经解决了这个问题,你可以考虑提交你的解决方案作为答案。 – Eric 2010-06-17 15:16:58
但我如何提交我的解决方案作为答案?只有我可以编辑标题。 – aco 2010-06-17 15:57:51