2013-12-20 37 views
1

我有一個Access數據庫與包含填充數據下面的相關字段的表[tblPriData]:訪問查詢返回幾個類似的記錄時,一個被標記

  • [tblPriData] [priStkCode] - 項的名稱
  • [tblPriData] [priDate] - 項目的購買日期
  • [tblPriData] [priOrigPrice] - 成本每件在購買
  • 的時間
  • [tblPriData] [priPriceConfirmed] - 一個布爾值,如果設置爲TRUE,它確認購買價格不再是一個估計值,但實際量

當新的交易輸入到表中,其[priOrigPrice]最初是根據歷史數據估算的,其[priPriceConfirmed]設置爲FALSE。在本月稍後當實際發票到達時,將[priOrigPrice]調整到適當的數量,然後將[priPriceConfirmed]設置爲TRUE。

如何運行一個查詢,顯示的記錄所有因爲如果設置爲FALSE 共享匹配[priStkCode]條目的任何 [priPriceConfirmed]匹配[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 

回答

1

這個查詢應該給你一個唯一的priStkCode值列表,其中至少有一行在False中存在於priPriceConfirmed中。

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; 
+0

非常感謝!我也很感謝你打破子查詢的工作方式。祝你有美好的一天! – Rot

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 
相關問題