gpt4 book ai didi

SQL:为一组列选择顶部记录

转载 作者:行者123 更新时间:2023-12-04 14:14:04 24 4
gpt4 key购买 nike

我需要为一组其他列选择具有最大值的最高记录。在下面的示例数据中,我需要为每组“id”、“ItemType”选择具有最大“Weightage”的顶级记录

 create table sampleTable(id int, ItemType varchar(10), ItemCode varchar(10), Weightage int)
insert into sampleTable values(1, 'A','aaa',2)
insert into sampleTable values(1, 'A','bbb',3)
insert into sampleTable values(1, 'A','ccc',3)
insert into sampleTable values(1, 'B','ddd',1)
insert into sampleTable values(1, 'B','eee',2)
insert into sampleTable values(2, 'A','aaa',1)

预期的输出应该是

id          ItemType    ItemCode
--------------------------------
1 A bbb
1 B eee
2 A aaa

我试过如下

SELECT top 1 id, ItemType,ItemCode
FROM sampleTable WITH(NOLOCK)
GROUP BY id,ItemType,ItemCode,Weightage
ORDER BY Weightage desc

但它没有给出预期的结果。谢谢

最佳答案

这是使用 ROW_NUMBER

的一种方法
SELECT TOP 1 WITH ties id, 
itemtype,
itemcode
FROM sampletable WITH(nolock)
GROUP BY id,
itemtype,
itemcode,
weightage
ORDER BY Row_number()OVER(partition BY id, itemtype ORDER BY weightage DESC)

TOP 1 with TIES 将根据 Order by

返回带 Tie 的记录

希望您知道使用 WITH(NOLOCK) hint 的含义。它还会拉取未提交的数据

关于SQL:为一组列选择顶部记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40055202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com