2014-01-23 38 views
0

表每名客戶的最後支付賬單:收到如何查找存在的回執表

列:
receipt_id,CUSTOMER_ID,receipt_date,receipt_amount

一位顧客會付出很多費用。我想在收據表中找到每位客戶最後付款賬單的詳細信息。我使用嵌套查詢,但我沒有得到正確的結果。

select customer_id,receipt_date from receipt where receipt_id=(select top 1 receipt_id from receipt order by customer_id desc) 

我使用Access 2007,C#2.0。

+0

回覆:「我使用嵌套查詢,但我沒有得到正確的結果。」 - 請編輯您的問題,向我們展示您的嘗試。 –

+0

從收據中選擇customer_id,receipt_date,其中receipt_id =(從customer_id desc的收據訂單中選擇top 1 receipt_id) – user3181915

回答

-1

假設記錄獲得每次插入,使客戶與CUSTOMER_ID其餘同所有的時間,只有receipt_id是不同的購買...然後在下面的SQL查詢應該通過CUSTOMER_ID工作

選擇receipt_id,receipt_date 自收到 組;

ü也可以通過receipt_date

+0

訪問將不會那樣。 [receipt_date]必須用於聚合函數(例如,MAX())或包含在GROUP BY子句中。 –

+0

如何找到最後一個收據呢? – user3181915

+0

通過上面的查詢運行查詢每個receipt_id與最新日期相關.....並且通過按receipt_date添加訂單,U根據最近日期獲得收據列表 – user3214392

1

添加以獲得最新收據細節每一個你需要尋找最新的[receipt_date]每個[CUSTOMER_ID]

SELECT 
    customer_id, 
    MAX(receipt_date) AS max_receipt_date 
FROM receipt 
GROUP BY customer_id 

你開始客戶然後可以使用,作爲一個組件在查詢返回整個[收據]行對於[CUSTOMER_ID]和日期:

SELECT receipt.* 
FROM 
    receipt 
    INNER JOIN 
    (
     SELECT 
      customer_id, 
      MAX(receipt_date) AS max_receipt_date 
     FROM receipt 
     GROUP BY customer_id 
    ) AS max 
     ON max.customer_id = receipt.customer_id 
      AND max.max_receipt_date = receipt.receipt_date 
+0

你是一個天才!!它的工作。非常感謝。 – user3181915

+0

是否有可能得到receipt_id? – user3181915

+0

@ user3181915我已經更新了我的答案。 –

0
SELECT r1.* 
FROM receipt r1 
WHERE r1.recipt_date 
    = 
    (SELECT MAX(receipt_date) FROM receipt r2 
     WHERE r2.customer_id = r1.customer_id 
    ); 

該解決方案使用相關子查詢。