获取TSQL中分组记录的ID
SQL获取TSQL中分组记录的ID,tsql,Tsql,SQL SELECT ID, AtDate, ItemID, StorageID, TargetItemDocDetailID FROM dbo.ItemBalanceRegisters SELECT MAX(AtDate) as AtDate, ItemID, StorageID, TargetItemDocDetailID FROM dbo.ItemBalanceRegisters S GROUP BY ItemID, StorageID, TargetItemD
SELECT ID, AtDate, ItemID, StorageID, TargetItemDocDetailID
FROM dbo.ItemBalanceRegisters
SELECT MAX(AtDate) as AtDate, ItemID, StorageID, TargetItemDocDetailID
FROM dbo.ItemBalanceRegisters S
GROUP BY ItemID, StorageID, TargetItemDocDetailID
输出
ID, AtDate, ItemID, StorageID, TargetItemDocDetailID
B363E263-F38B-478F-B8BF-92A0B4C0C11D 2020-05-15 09:41:01.7530061 1 6 NULL
48EF1748-5459-491E-A84F-AEBF46145217 2020-05-15 11:05:18.7743409 1 9 NULL
19255F6A-C868-4DEA-8785-D4EF5005B824 2020-05-15 10:24:07.9138724 1 6 NULL
我只需要从每个组中获取具有唯一文件名:ItemID、StorageID、TargetItemDocDetailID
和MAX()date的记录
但是我还需要获得ID
if组中的记录
所以我的SQL
SELECT ID, AtDate, ItemID, StorageID, TargetItemDocDetailID
FROM dbo.ItemBalanceRegisters
SELECT MAX(AtDate) as AtDate, ItemID, StorageID, TargetItemDocDetailID
FROM dbo.ItemBalanceRegisters S
GROUP BY ItemID, StorageID, TargetItemDocDetailID
返回
2020-05-15 10:24:07.9138724 1 6 NULL
2020-05-15 11:05:18.7743409 1 9 NULL
这很好,但我需要查看记录的ID
那么如何将ID
也导入到我的SQL中
2020-05-15 10:24:07.9138724 1 6 NULL 19255F6A-C868-4DEA-8785-D4EF5005B824
2020-05-15 11:05:18.7743409 1 9 NULL 48EF1748-5459-491E-A84F-AEBF46145217
使用beloe查询
SELECT ID,AtDate,ItemID,StorageID,TargetItemDocDetailID
FROM
(
SELECT ROW_NUMBER() OVER(Partition BY ItemID, StorageID, TargetItemDocDetailID ORDER BY AtDate DESC) AS RN,*
FROM TABLE_NAME
)T
WHERE RN=1
您可以在解决方案帮助下面的派生表检查中使用加重函数
使用
行号