TSQL - выберите строки с более высоким счетом, а при одинаковом количестве - строку с более высоким значением идентификатора - PullRequest
2 голосов
/ 13 сентября 2011

HELP !!! Я в тупике и перепробовал несколько вариантов безрезультатно ... Мне нужно возвращать по одной строке для каждого Pub_id, и возвращаемая строка должна быть той, у которой больше счетчик, а когда есть более одной строки с наибольшим количеством, мне нужна строка с более высоким значением price_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

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011
;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 голосов
/ 14 сентября 2011

Хотите что-то подобное

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)  
...