Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Подскажите плиз.
Есть таблица с картинками.
Нужно вывести +2 колонки с нумерацией и разбивкой по @cnt штук
Т.е.
SELECT  ROW_NUMBER() OVER (ORDER BY ImageID) AS rn,
             ISNULL(.LargeImage, OriginalImage) AS Img, 
FROM   tblImage
выводит 1,2,3,4,5,6 и т.д.
Мне нужно вывести первый столбец с группировкой по @cnt
Например если @cnt = 4 то 1,2,3,4,1,2,3,4,1,2,3,4 и т.д.
А второй столбец- порядковый номер созданной группы 1,1,1,1,2,2,2,2,3,3,3,3 и т.д.

Можно ли как то сформировать такой group by для over ?
31 май 11, 14:46    [10739023]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Вы знаете, что такое целое и остаток от деления ? На 4 в данном случае
31 май 11, 14:51    [10739073]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Glory, т.е. вложенным запросом?
Сначала пронумеровать, а потом сгруппировать по целой части от деления?
31 май 11, 14:58    [10739138]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
igor2222
Glory, т.е. вложенным запросом?
Сначала пронумеровать, а потом сгруппировать по целой части от деления?

У вас нет никакой группировки
То, что вы хотите сделать называется paging
31 май 11, 14:59    [10739159]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Glory,
примерно понял. Спасибо.
31 май 11, 15:06    [10739241]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
igor2222
Glory,
примерно понял. Спасибо.

Потренироваться на кошках можно где-то так:
SELECT *, ROW_NUMBER() OVER (ORDER BY t.n DESC) rn,
((ROW_NUMBER() OVER (ORDER BY t.n DESC)%4)+3)%4+1 g1,
(ROW_NUMBER() OVER (ORDER BY t.n DESC)-1)/4+1 g2
FROM (
SELECT n=1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
) t
31 май 11, 15:10    [10739306]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
igor2222
Glory, т.е. вложенным запросом?
Если Вы-таки будете накладывать ограничения на OVER(),
Вам придётся использовать либо derived table, либо CTE.
Прямо в WHERE не прокатит.
31 май 11, 15:11    [10739315]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
SELECT 
    t1.Img, 
    t1.rn/(@RowCnt+1) AS GroupNum, 
    ROW_NUMBER() OVER (PARTITION BY t1.rn/(@RowCnt+1) ORDER BY rn) AS rn
 
  FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY PrimaryIMG DESC, ImageID ) AS rn,
	 	      ISNULL(LargeImage, OriginalImage) AS Img
     FROM  tblImage)  t1

вот так мне нужно было.

Всем спасибо. Хотя если есть замечания- послушаю.
31 май 11, 15:34    [10739546]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
igor2222
SELECT 
    t1.Img, 
    t1.rn/(@RowCnt+1) AS GroupNum, 
    ROW_NUMBER() OVER (PARTITION BY t1.rn/(@RowCnt+1) ORDER BY rn) AS rn
 
  FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY PrimaryIMG DESC, ImageID ) AS rn,
	 	      ISNULL(LargeImage, OriginalImage) AS Img
     FROM  tblImage)  t1

вот так мне нужно было.

Всем спасибо. Хотя если есть замечания- послушаю.
А так не проще?
SELECT 
 ISNULL(LargeImage, OriginalImage) Img, 
 ROW_NUMBER()OVER(ORDER BY PrimaryIMG DESC, ImageID)/(@RowCnt+1) GroupNum, 
 ROW_NUMBER()OVER(ORDER BY PrimaryIMG DESC, ImageID)%(@RowCnt+1) rn 
FROM  tblImage
31 май 11, 15:38    [10739594]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
iap,
неа, не проще:

0	1
0	2
0	3
0	4
0	5
0	6
1	0
1	1
1	2
1	3
31 май 11, 18:34    [10741054]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Это для SSRS отчета. По первому полю группируются строки, по второму- колонки
31 май 11, 18:36    [10741067]     Ответить | Цитировать Сообщить модератору
 Re: Пронумеровать строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
igor2222
iap,
неа, не проще:

0	1
0	2
0	3
0	4
0	5
0	6
1	0
1	1
1	2
1	3
А что должно получиться?
31 май 11, 20:37    [10741509]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить