2011-09-13 52 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

對於大塊代碼不要使用後面的勾號。只需選擇它並點擊代碼格式圖標即可。看起來好多了!這似乎並不是一個有效的查詢。 –

相關問題