我尝试过使用 Max()、子查询和联接,但我的知识有限,我不知道如何组织它们。我愿意只使用几个嵌套的选择语句,因为我知道它可能会占用大量资源,但我无法让它工作。
我需要返回任何空值,以及每个位置的最高 ConfigID。
TABLE
ID Location ConfigID
1 AA NULL
2 AA 2
3 AA 1
4 BB 5
5 BB 4
6 BB 3
7 CC NULL
8 CC 6
我想看看结果:
ID Location ConfigID
1 AA NULL
2 AA 2
4 BB 5
7 CC NULL
8 CC 6
我已经尝试过:
select ID, Location, ConfigID
from Table
where ConfigID is null
or configID = (select ConfigID
from table
where Location in (select distinct Location
from Table
order by ConfigID desc
)
)
SQL Server 不喜欢这样,因为除非使用 Top,否则我无法在子查询中使用 order by。现在我再次查看它,我认为 order by 甚至不在正确的子查询中。这是我所能得到的最接近的。当我看到Select Max from each subset时我充满希望,但我认为这是一个死胡同。另外,我不相信自联接会起作用,因为我要自联接的数据都在一列中。
最佳答案
你就快到了。是的,您需要使用TOP 1
,这有什么问题吗?
试试这个:
SELECT ID, Location, ConfigID
FROM myTable t1
WHERE ConfigID IS NULL
OR ID = (SELECT TOP 1 ID
FROM myTable t2
WHERE t2.Location = t1.Location
ORDER BY ConfigID DESC)
这是一个fiddle .
关于sql-server - 如何返回一组行中的多个值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44980668/