Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Прошу помощи с запросом  [new]
Прошу помощи с запросом
Guest
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)

Есть табличка

TestTable
PK int
FK int
AnyText varchar(50)


Как сформулировать запрос, чтобы была группировка по FK, выбирался минимальный для группы PK и его AnyText.
Можно ли такое написать без подзапросов и юзерных функций?
Может ли помочь дополнительная колонка, если в нее ставить флажок показывающий, что в этой строке находится нужный текст для группы?

Хочется что-то вроде:

SELECT FK, Min(PK), AnyTextForMinPK
FROM TestTable
GROUP BY FK
6 сен 12, 22:53    [13126932]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
F1Requested
Guest
Прошу помощи с запросом,
select top 1 with ties
         PK,FK,AnyText
  from TestTable
 order by row_number()over(partition by FK order by PK)
6 сен 12, 23:03    [13126972]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
Читатель неместный
Guest
SELECT top 1 with ties
FK, PK , AnyTextForMinPK
FROM TestTable
order by row_number() over (partition by fk order by pk ASC)
6 сен 12, 23:05    [13126979]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
Прошу помощи с запросом
Guest
Благодарю, работает. Ушел курить хелп.

ЗЫ: management studio не подсветила ties как зарезервированное слово...
6 сен 12, 23:16    [13127022]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
Прошу помощи с запросом
Guest
Вот незадача, еще одно требование возникло :(
В таблицу добавилась колонка
Value Int
и теперь необходимо в добавок ко всему вывести сумму этих Value по FK...

Вышеописанную конструкцию можно под это модифицировать?
7 сен 12, 00:02    [13127165]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
F1Requested
Guest
Прошу помощи с запросом,
select FK,min(PK),max(case when rn=1 then AnyText end),sum(Value)
  from (select *,row_number()over(partition by FK order by PK)rn
          from TestTable)a
 group by FK
7 сен 12, 00:27    [13127242]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
SELECT TOP(1) WITH TIES *, [SUM([Value])]=SUM([Value])OVER(PARTITION BY FK)
FROM TestTable
ORDER BY ROW_NUMBER() OVER (PARTITION BY FK ORDER BY PK);
7 сен 12, 13:19    [13129427]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить