【问题标题】:Access SQL - Where multiple dates matchAccess SQL - 多个日期匹配的地方
【发布时间】:2020-07-07 03:52:01
【问题描述】:

我有以下名为“产品”的访问表

REF         DATE               DAYS
12345       26/03/2020         55
12345       26/03/2020         55
12345       20/03/2020         50
12345       30/06/2020        100
98765       05/02/2020         70
98765       05/02/2020         70
98765       10/04/2020         91

我需要在 Access 中创建一个 SQL 查询,该查询提供一个输出,其中列出了每个唯一的 REF,然后是一个 YES/NO 列。如果 DAYS

我对 DAYS 值大于 90 的任何日期不感兴趣。

对于上面的示例,输出将是:

REF       SAME_DATE
12345     No
98765     Yes

【问题讨论】:

    标签: sql date ms-access match


    【解决方案1】:

    在 MS Access 中,您可以使用聚合来计算标志,然后是 JOIN

    select p.*, nz(flag, 'NO')
    from products as p left join
         (select pp.ref, 'YES' as flag
          from products as pp
          where p2.days <= 90
          group by pp.ref
          having min(date) = max(date)
         ) as pp
         on pp.ref = p.ref;
    

    编辑:

    如果您希望每个 ref 有一行,这会容易得多:

    select ref,   
           iif(min(date) = max(date), "Yes", "No") as same_date
    from products
    where days <= 90
    group by ref;
    

    【讨论】:

    • 嗨,戈登,尝试了这个,但它返回的是每条记录,而不是每个 REF 的唯一记录。此外,每个“标志”都是“是”。我注意到您的 WHERE p2.days
    • @markthornton90 。 . .我添加了每个ref 一行的版本。
    猜你喜欢
    • 2020-03-06
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多