我有以下查询:
select field1,field2 from
#table1 left join
(select field3, max (field4) as field2
from #table1
group by field3) a on #table1.field3 = a.field3
我想改变它,所以#table1只使用一次(最好也是最有效的方式)
有什么想法吗?
谢谢!
答案 0 :(得分:2)
SELECT field1, MAX(field4) OVER (PARTITION BY field3) AS field2
FROM #table1
虽然在评论中作出澄清......
我想我真正想要的是什么 是每场3个记录 max(field4)和相应的 FIELD1。我认为这个假设 必须要做field1和 field3有一个严格的一个 关系(也就是field3的值 永远不会有两个相应的 field1)的值
......我认为这是你真正需要的。
WITH cte As
(
SELECT field1, field3,field4,
ROW_NUMBER() OVER (PARTITION BY field3 ORDER BY field4 DESC) AS RN
FROM #table1
)
SELECT field1, field3,field4
FROM cte
WHERE RN=1