访问查询以在标记一个时返回几个类似的记录

时间:2013-12-20 16:18:08

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

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

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

当在表格中输入新交易时,最初根据历史值估算其[priOrigPrice],并将它们的[priPriceConfirmed]设置为FALSE。实际发票到达的月份后期,[priOrigPrice]调整到适当的数量,然后将[priPriceConfirmed]设置为TRUE。

如果对于任何所有记录以匹配[priStkCode]的查询共享匹配[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

2 个答案:

答案 0 :(得分:1)

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

SELECT DISTINCT priStkCode
FROM tblPriData
WHERE priPriceConfirmed = False;

然后,您可以为该查询选择匹配的tblPriDataINNER JOIN

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

答案 1 :(得分:0)

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