Как получить выбранную строку с помощью T-Sql в SQL Server 2008 - PullRequest
0 голосов
/ 07 ноября 2011

у меня есть следующий формат набора результатов на сервере sql

TagId   Tag   Views
1       A     1234
1       A     123

Я хочу получить запись с наивысшими значениями и игнорировать остальные, я имею в виду, что в наборе результатов должна быть только первая строка

Ответы [ 4 ]

3 голосов
/ 07 ноября 2011

Попробуйте это

; WITH CTE AS
(
    select Tagid, Tag, Views, Rank() over (Partition BY TagId, Tag order by Views DESC) as Rank
    from table1
)
SELECT * FROM CTE WHERE Rank = 1
3 голосов
/ 07 ноября 2011
select top 1 *
from tableName
order by Views desc

или

select max(columnName)
from TableName

первый вернет всю строку (все столбцы), последний вернет скалярное значение

1 голос
/ 07 ноября 2011
Select A.myGROUP, A.Amt
from mtest A
  INNER JOIN (Select myGroup, max(Amt) as minAmt from mtest group by mygroup) B
  ON B.myGroup=A.mygroup
  and B.MinAmt = A.Amt

если вам нужно получить дополнительные данные: или если вы не

Select tagId, tag, max(views)
FROM table
group by tagId, tag
0 голосов
/ 08 ноября 2011

Если существует более одной строки с максимальным значением Views, и вы хотите получить все из них, вы также можете использовать TOP (<i>n</i>) WITH TIES:

 SELECT TOP (1) WITH TIES *
 FROM atable
 ORDER BY Views DESC
...