【问题标题】:Help with this JET Sql Query有关此 JET Sql 查询的帮助
【发布时间】:2010-06-17 14:26:57
【问题描述】:

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

例如我有这些字段:

  • idInvoice
  • 日期
  • 金额

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

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

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

【问题讨论】:

  • 已解决:有可能做“联合”
  • 回答您自己的问题是可以接受的。如果您已经解决了问题,您可以考虑提交您的解决方案作为答案。
  • 但我如何提交我的解决方案作为答案?只有我可以编辑标题。

标签: sql ms-access select jet


【解决方案1】:

假设您的日期字段不允许 Null,您应该能够使用 IIf 表达式进行计算。

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      Select idInvoice, date, amount, 
      amount * case when date<'20100101' then 20 else 35 end as amount from invoices 
      

      【讨论】:

      • 我正在使用来自 .net (jet sql) 的访问。如果运行“CASE”,则显示语法错误
      • Jet/ACE 在 SQL 中没有 CASE 语句。
      猜你喜欢
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多