2017-04-12 50 views
-1

我一直在摔跤,沒能找到合適的解決方案。我有一個非常簡單的SQL數據庫有四列, (產品)代碼, 概念(1個purchse,2回), 供應商(和), date_of_purchase當需要幾個色譜柱時,從一個色譜柱獲得的最大值

我需要得到:

|代碼|供應商| date_of_purchase |

我曾嘗試:

SELECT 
    code, 
    supplier, 
    MAX (date_of_purchase) 

FROM SSQL_E03.dbo.pchs 

WHERE concept =1 
GROUP BY code, supplier 
ORDER BY code 

如果我的代碼和供應商不羣,我得到一個錯誤,但當然,我不從需要每個供應商的最後一次購買,但只有最後購買每一個代碼,我想也

WHERE concept = 1 AND date_of_purchase = MAX(date_of_purchase) 

,沒有工作或者

有人能幫助我獲得

代碼, 供應商, 和(只有最後一個)DATE_購買

單列爲每個代碼中的?

非常感謝

+1

用你正在使用的數據庫標記你的問題: –

+0

可能想檢查SQL中的HAVING條款。 – PaulProgrammer

回答

1

大多數數據庫支持ANSI SQL row_number()功能:

SELECT p.* 
FROM (SELECT p.*, 
      ROW_NUMBER() OVER (PARTITION BY supplier ORDER BY date_of_purchase DESC) as seqnum 
     FROM SSQL_E03.dbo.pchs p 
     WHERE concept = 1 
    ) p 
WHERE seqnum = 1; 
0

戈登的回答是有幫助的。但是,結果是除了代碼以外的供應商分組。所以我按照下面的方式得到了每個代碼的最新購買。

SELECT p.* 
FROM (
SELECT p.*, 
ROW_NUMBER() OVER (PARTITION BY code ORDER BY date_of_purchase DESC) as latest 
FROM stackOver p 
WHERE concept = 1 
) p 
WHERE latest=1;