Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
Есть пример, делает то, что мне нужно, т.е. выборку первых N записей в группе. Как добавить еще одно поле в выборку, которое будет содежрать в каждой записи - общее кол-во запсией в данной группе? SET NOCOUNT ON DECLARE @MyTable table ( RowID int IDENTITY, Category varchar(5), [ID] varchar(5), [Description] varchar(25), Price decimal(10,2) ) INSERT INTO @MyTable VALUES ( 'Pot', 'A1', 'Small Saucepan', 21.50 ) INSERT INTO @MyTable VALUES ( 'Pot', 'A2', '1 Qt Saucepan', 29.95 ) INSERT INTO @MyTable VALUES ( 'Pot', 'A3', '1.5 Qt Saucepan', 33.95 ) INSERT INTO @MyTable VALUES ( 'Pot', 'A4', 'Double Boiler', 39.50 ) INSERT INTO @MyTable VALUES ( 'Pot', 'A5', 'Stewpot', 49.50 ) INSERT INTO @MyTable VALUES ( 'Pot', 'A6', 'Pressure Cooker', 79.95 ) INSERT INTO @MyTable VALUES ( 'Pan', 'B1', '8"" Pie', 6.95 ) INSERT INTO @MyTable VALUES ( 'Pan', 'B2', '8"" Sq Cake', 7.50 ) INSERT INTO @MyTable VALUES ( 'Pan', 'B3', 'Bundt Cake', 12.50 ) INSERT INTO @MyTable VALUES ( 'Pan', 'B4', '9x12 Brownie', 7.95 ) INSERT INTO @MyTable VALUES ( 'Bowl', 'C1', 'Lg Mixing', 27.50 ) INSERT INTO @MyTable VALUES ( 'Bowl', 'C2', 'Sm Mixing', 17.50 ) INSERT INTO @MyTable VALUES ( 'Tools', 'T1', '14"" Spatula', 9.95 ) ;WITH dt AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY Category ORDER BY Price DESC ) AS 'RowNumber', RowID, Category, [ID], [Description], Price FROM @MyTable ) SELECT RowID, Category, [ID], [Description], Price FROM dt WHERE RowNumber <= 2 |
7 июн 13, 15:04 [14406706] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Winnipuh,COUNT(*)OVER(PARTITION BY Category)? |
7 июн 13, 15:06 [14406727] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
;WITH dt AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY Category ORDER BY Price DESC ) AS 'RowNumber', RowID, Category, [ID], [Description], Price, count(*) over( PARTITION BY Category ) cnt FROM @MyTable ) SELECT RowID, Category, [ID], [Description], Price, cnt FROM dt WHERE RowNumber <= 2 |
7 июн 13, 15:09 [14406746] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
спасибо, туплю... ![]() |
7 июн 13, 15:10 [14406760] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |