A | B | num
----------------------
123 1 2
123 10 5
结果:
A | B | max_num
-------------------------
123 10 5
我们说表名是tab,目前我有
SELECT T.A, MAX(T.num) AS max_num
FROM tab T
GROUP BY T.A
但是,结果不包含B列。
SELECT T.A, T.B... GROUP BY T.A, T.B
也不会给出期望的结果,因为根据A,B对找到了最大值。
如何选择仅按A分组的最大数量,但是为所选的最大行保留B的值?
答案 0 :(得分:2)
1.从表格中选择最大数量
2. IN Clause的正确过滤器
select * from Mytable where
num in(
select TOP 1 MAX(num)
from mytab
group by colA)
或
对于SQL SERVER
您可以使用ROW_NUMBER ()
select * from (
select ROW_NUMBER () OVER (ORDER BY num desc) rn,*
from tab
)d where d.rn=1
答案 1 :(得分:1)
这应该做的工作:
Select t1.A, T1.B,T1.num from tab t1 where (T1.A,T1.num) in (
SELECT T.A, MAX(T.num) AS max_num
FROM tab T
GROUP BY T.A)
选择记录,其中num等于max(num)
请参阅SQLFIDDLE
答案 2 :(得分:0)
你的意思是你想要整个行,其中c =每个a的max(c)值?如果这是一个平局,这个将给出两行:
select a, b, c
from t as t1
where c = (select max(c) from t t2
where t1.a = t2.a)