将查询转换为仅使用一次表

时间:2010-08-23 13:17:07

标签: sql sql-server-2005 tsql

我有以下查询:

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只使用一次(最好也是最有效的方式)

有什么想法吗?

谢谢!

1 个答案:

答案 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