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

Откуда:
Сообщений: 186
Привет всем!
Подскажите, пожалуйста.. не получается у меня самостоятельно решить вопрос((

Есть к примеру вот такая таблица:
Fruit IdFruit
Apple 41
Kiwi 87
Kiwi 87
Kiwi 87
Orange 56


Мне нужно присвоить номера, разделив на группы по столбцу IdFruit,но при этом, чтобы в группе нумерация начиналась не с 1, с того порядкого номера, который следующий за группой. Кароче вот что нужно получить - столбец NumberFruit:
Fruit IdFruit NumberFruit
Apple 41 1
Kiwi 87 2
Kiwi 87 2
Kiwi 87 2
Orange 56 3


Я пытаюсь вот так сделать, но группа всегда с 1..
CREATE TABLE [dbo].[Fruits] ([Fruit] [nvarchar] (10) NULL, [IdFruit] [int] NULL)

INSERT INTO [Fruits] VALUES ('Apple', 41), ('Kiwi', 87), ('Kiwi', 87), ('Kiwi', 87), ('Orange', 56)

SELECT  *, (ROW_NUMBER() OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit])) AS NumberFruit 
FROM [Fruits]
ORDER BY 1
17 фев 19, 22:12    [21812275]     Ответить | Цитировать Сообщить модератору
 Re: Объединение номеров столбца  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
LisSp
Я пытаюсь вот так сделать, но группа всегда с 1..
CREATE TABLE [dbo].[Fruits] ([Fruit] [nvarchar] (10) NULL, [IdFruit] [int] NULL)

INSERT INTO [Fruits] VALUES ('Apple', 41), ('Kiwi', 87), ('Kiwi', 87), ('Kiwi', 87), ('Orange', 56)

SELECT  *, (ROW_NUMBER() OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit])) AS NumberFruit 
FROM [Fruits]
ORDER BY 1
SELECT  *, ROW_NUMBER() OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit]) + MIN([IdFruit]) OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit]) - 1 AS NumberFruit
FROM [Fruits]
ORDER BY 1
17 фев 19, 23:14    [21812317]     Ответить | Цитировать Сообщить модератору
 Re: Объединение номеров столбца  [new]
LisSp
Member

Откуда:
Сообщений: 186
alexeyvg
LisSp
Я пытаюсь вот так сделать, но группа всегда с 1..
CREATE TABLE [dbo].[Fruits] ([Fruit] [nvarchar] (10) NULL, [IdFruit] [int] NULL)

INSERT INTO [Fruits] VALUES ('Apple', 41), ('Kiwi', 87), ('Kiwi', 87), ('Kiwi', 87), ('Orange', 56)

SELECT  *, (ROW_NUMBER() OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit])) AS NumberFruit 
FROM [Fruits]
ORDER BY 1
SELECT  *, ROW_NUMBER() OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit]) + MIN([IdFruit]) OVER(PARTITION BY [IdFruit] ORDER BY [IdFruit]) - 1 AS NumberFruit
FROM [Fruits]
ORDER BY 1


Получилось, к сожалению, не то...

Apple 41 41
Kiwi 87 87
Kiwi 87 88
Kiwi 87 89
Orange 56 56
17 фев 19, 23:20    [21812326]     Ответить | Цитировать Сообщить модератору
 Re: Объединение номеров столбца  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
LisSp
Получилось, к сожалению, не то...
А, не так понял...
SELECT  *, DENSE_RANK() OVER(ORDER BY [Fruit]) AS NumberFruit 
FROM [Fruits]
ORDER BY 1
17 фев 19, 23:38    [21812361]     Ответить | Цитировать Сообщить модератору
 Re: Объединение номеров столбца  [new]
LisSp
Member

Откуда:
Сообщений: 186
alexeyvg
LisSp
Получилось, к сожалению, не то...
А, не так понял...
SELECT  *, DENSE_RANK() OVER(ORDER BY [Fruit]) AS NumberFruit 
FROM [Fruits]
ORDER BY 1


Спасибо большое!!!
17 фев 19, 23:39    [21812364]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить