0
我使用以下查詢(在SQL Server 2008中)從表中提取最後20條記錄。SQL Server:如何選擇僅查看一列的唯一值
查詢按預期工作,我唯一的問題是這是一個日誌表,其中某個itemID
可能會出現多次。 有沒有一種方法可以在這裏選擇唯一的itemID? 我嘗試使用DISTINCT,但這不起作用,因爲不是整行都重複,只是itemid可以出現多次(然後時間戳或其他數據不同)。
我的SQL:
ALTER PROCEDURE [dbo].[RC_FetchUpdates]
@departmentID int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 20 A.itemID,
A.lastUpdate,
CONVERT(VARCHAR(11), A.modTime, 106) AS modTime,
A.modBy,
B.itemName,
B.linkRef
FROM RC_LogLinks A
LEFT JOIN RC_Links B
ON B.itemID = A.itemID
WHERE B.departmentID = @departmentID
AND A.lastUpdate <> 'Deleted'
ORDER BY A.modTime desc, B.itemName
FOR XML PATH('updates'), ELEMENTS, TYPE, ROOT('ranks')
END
非常感謝任何幫助,蒂姆。
使用ROW_NUMBER OVER(PARTITION BY itemID ORDER BY someother col)as rn .. WHERE rn = 1 – Mihai 2014-10-06 21:56:23
這很大程度上取決於您要查看每個itemID的哪個實例... – 2014-10-06 21:57:32
@DanielE .:謝謝 - 我只想要查看最新的實例,即使用最新的modTime。 – user2571510 2014-10-06 22:02:04