2011-09-13 44 views
2

帮助!!!我很难过,并尝试了几个选项无济于事...... 我需要为每个Pub_id返回一行,并且返回的行应该是具有较高Count的行,并且当有多行最高的数量,我需要更高的price_id。TSQL - 选择具有更高计数的行,并且当计数相同时,具有更高id值的行

我已填充一个表,此数据...

pub_id, price_id, count 
7, 59431,   5 
22, 39964,   4 
39, 112831,   3 
39, 120715,   2 
47, 95359,   2 
74, 142825,   5 
74, 106688,   5 
74, 37514,   1 

,这就是我需要返回...

pub_id, price_id, count 
7, 59431,   5 
22, 39964,   4 
39, 112831,   3 
47, 95359,   2 
74, 142825,   5 
+1

请不要使用HTML标签。只需粘贴表格并单击'{}'图标即可将选定的文本格式化为代码。 –

回答

5
;WITH T 
    AS (SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY pub_id 
           ORDER BY [count] DESC, price_id DESC) AS rn 
     FROM your_table) 
SELECT pub_id, 
     [count], 
     price_id 
FROM T 
WHERE rn=1 
+0

真棒 - 完美的工作 – Glenn

+1

+1以弥补缺少的接受一个好的答案 –

0

你想要的东西像这样

select pub_id, 
     Count, 
     Price_Id 
from (select Pub_id, 
       max(count), 
       Price_Id 
     from table_name 
     group by Pub_id) der_tab 
group by Pub_id, 
      Count 
having Price_id = max(price_Id) 
+0

对于大块代码不要使用后面的勾号。只需选择它并点击代码格式图标即可。看起来好多了!这似乎并不是一个有效的查询。 –

相关问题