sql-server - 如何返回一组行中的多个值。

标签 sql-server max

我尝试过使用 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/

相关文章:

mysql - 从 MySQL 迁移到 SQL Server 时出现复杂查询的意外结果?

c# - 如何创建对一个表的多个表引用 - Entity Framework

sql-server - SQL Server 2012 CTE 查找分层数据的根或顶层父级

MySQL - 在多个列中查找 10 条记录的 "Max"绝对值?

c# - 异常 : Incorrect syntax near the keyword 'AND'

sql-server - SQL Server函数在列中显示词频

Python 最大函数

python - 使用 numpy nan 查找列表的最大值

arrays - 从数组中获取具有 max 属性的元素

python - 如何获得所有的最大值max函数