我的表看起来像:SQL服务器:最大-N-每组扩展
A B C D
1 1 1 1
1 1 3 2
1 1 0 4
1 1 2 1
1 2 1 0
1 2 0 2
1 2 4 5
2 1 5 3
我的目标是,对于每对A和B的,输出在对应于MIN d值(C )和D中对应于MAX(C)的值。输出应该
A B D at MIN(C) D at MAX(C)
1 1 4 2
1 2 2 5
2 1 3 3
我知道,提取MIN(C)和MAX(C)我只是做:
SELECT A, B, MIN(C) as "minC", MAX(C) as "maxC"
FROM Table
GROUP BY A, B
ORDER BY A, B
我的问题是:我怎么把列d凑凑热闹?如果我将它包含在SELECT和GROUP BY子句中,它将为每个D生成MIN(C)和MAX(C),这不是我想要的。而且,我甚至不需要输出MIN(C)和MAX(C)。 D是我所追求的。
SQL Select only rows with Max Value on a Column中提供的基本概述似乎无法处理这种情况。
在此先感谢!
我是新来的SQL-有没有办法做到这一点,而无需将数据插入到新表中?可以将“with”命令应用于已经存在的表格吗?我使用的表格非常大(我相信不可变)。谢谢你的帮助! – ddp26 2012-03-20 15:43:12
@ ddp26 - 我已经更新了答案。我希望现在会更清楚。 – 2012-03-20 16:05:46