記錄從連接的數據樣本,我需要爲了回報最新交易,該帳戶和特定的代碼來創建一個SQL查詢最後日期返回數據。即查詢應返回如下;
的60.00目前爲止,股價錄得帳戶S494和對24/10/2016代碼5044。這將確定最後一位客戶何時購買了該物品以及以何種價格購買。
記錄從連接的數據樣本,我需要爲了回報最新交易,該帳戶和特定的代碼來創建一個SQL查詢最後日期返回數據。即查詢應返回如下;
的60.00目前爲止,股價錄得帳戶S494和對24/10/2016代碼5044。這將確定最後一位客戶何時購買了該物品以及以何種價格購買。
您可以使用RANK()進行分區,並選擇您所需要的範圍(在這種情況下,你需要的頂部1,那麼,RANK()是1 - 但你可以進行相應的修改where子句)。
您可以使用ROW_NUMBER()來代替,但您可能有多個記錄,其中trandate是相同的,所以您需要兩個記錄,其中RANK()是1(使用示例中的數據 - 如果這永遠不會是大小寫使用ROW_NUMBER)。
SELECT [code], [account], [price], [trandate]
FROM
(SELECT RANK() OVER (PARTITION BY [account], [code] ORDER BY [trandate] DESC) [rank], [code], [account], [price], [trandate] FROM [#trans]) [d]
WHERE [d].[rank] = 1
SELECT code,
account,
price,
trandate
FROM
(SELECT t.*,
row_number() over (partition BY account, code order by convert(datetime,trandate,103) DESC) rn
FROM your_table
) t
WHERE rn = 1;
您不應該將'DATE'值存儲爲'VARCHAR' ...將它們存儲爲正確的類型 - 它使得這些類型的查詢不是皇室的痛苦。 – Siyual