与this question非常相似,我希望只有一行是列的最大值。使用表时,所有这些解决方案似乎都很有用,但我尝试使用子查询来完成此操作。我想将此问题归结为一个问题。
我想到的两个方法是:a)使用临时表,或b)复制子查询代码。临时表方法很简单,但强制我使用多个查询。重复的代码也可以,但是,它......重复的代码。
我想要做的是在子查询中的INTO行,所以我可以重用该子查询中的信息:
select ...
from (
select ..., count(someColumn) as countColumn
into #tempTable
where ...
group by ...
)
where countColumn = (select max(countColumn) from #tempTable)
但显然不允许......
这可以在一个查询中完成,而不重复我的子查询吗?
答案 0 :(得分:1)
使用CTE怎么样?
with t as (
select . . ., count(someColumn) as countColumn
where . . .
group by . . . .
)
select *
from t
where countColumn = (select max(CountColumn from t);
您也可以使用分析函数执行此操作:
select *
from (select . . ., count(someColumn) as countColumn,
max(count(someColumn)) over () as maxcountColumn
where . . .
group by . . .
) t
where countColumn = maxcountColumn;