【问题标题】:Access query to return several similar records when one is flagged访问查询以在标记一条记录时返回多条相似记录
【发布时间】:2013-12-20 16:18:07
【问题描述】:

我有一个 Access 数据库,其中包含一个表 [tblPriData],其中包含以下填充了数据的相关字段:

  • [tblPriData].[priStkCode] - 项目名称
  • [tblPriData].[priDate] - 商品购买日期
  • [tblPriData].[priOrigPrice] - 购买时每件商品的成本
  • [tblPriData].[priPriceConfirmed] – 一个布尔值,如果设置为 TRUE,则确认购买价格不再是估计值,而是实际金额

当新交易输入到表中时,它们的 [priOrigPrice] 最初是根据历史值估计的,并且它们的 [priPriceConfirmed] 设置为 FALSE。当月晚些时候实际发票到达时,[priOrigPrice] 被调整为适当的金额,然后 [priPriceConfirmed] 设置为 TRUE。

如果 [priPriceConfirmed] 设置为 FALSE 的 any共享匹配的 [priStkCode] 的条目?

作为说明,如果表格包含以下数据:

priStkCode      priDate     priOrigPrice       priPriceConfirmed
AAA             1/1/13      $100                Yes
AAA             2/1/13      $150                Yes
AAA             3/1/13      $150                No
BBB             1/1/13      $10             Yes
BBB             2/1/13      $10             Yes
CCC             3/1/13      $45             No

查询将返回所有 AAA 条目和所有 CCC 条目:

priStkCode      priDate     priOrigPrice       priPriceConfirmed
AAA             1/1/13      $100                Yes
AAA             2/1/13      $150                Yes
AAA             3/1/13      $150                No
CCC             3/1/13      $45             No

【问题讨论】:

    标签: sql ms-access subquery ms-access-2010


    【解决方案1】:

    此查询应为您提供唯一的 priStkCode 值列表,其中至少有一行在 priPriceConfirmed 中存在 False。

    SELECT DISTINCT priStkCode
    FROM tblPriData
    WHERE priPriceConfirmed = False;
    

    然后您可以选择与该查询匹配的 tblPriData 行和 INNER JOIN。

    SELECT pd.*
    FROM
        tblPriData AS pd
        INNER JOIN
        (
            SELECT DISTINCT priStkCode
            FROM tblPriData
            WHERE priPriceConfirmed = False
        ) AS sub
        ON pd.priStkCode = sub.priStkCode;
    

    【讨论】:

    • 非常感谢!我也很感谢您分解子查询的工作原理。祝你有美好的一天!
    【解决方案2】:
    SELECT DISTINCT
     pd.priStkCode
    ,pd.priDate
    ,pd.priOrigPrice
    ,pd.priPriceConfirmed
    FROM  
     tblPriData pd
     INNER JOIN
     (SELECT priStkCode
      FROM tblPriData
      WHERE priPriceConfirmed = No) AS subqry
        ON pd.priStkCode = subqry.priStkCode
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多