Tryingtobeageek Ответов: 1

В таблице есть столбец concatenate который содержит повторяющиеся значения мне нужно обновить row_number для разделения на основе столбца concatenate


Concatenate	                 concatenatecount	result
ABNS CONSTRUCTIONS BNREDDY NAGAR	        NULL	1
ABNS CONSTRUCTIONS BNREDDY NAGAR	        NULL	2
ABNS CONSTRUCTIONS BNREDDY NAGAR	        NULL	3
ACC LIMITED, MYSORE ROAD, BLR	            NULL	1
ACC LIMITED, MYSORE ROAD, BLR	            NULL	2
ASK ENTERPRISES	                            NULL	1
ASK ENTERPRISES	                            NULL	2
ASK ENTERPRISES	                            NULL	3
ASK ENTERPRISES	                            NULL	4


Что я уже пробовал:

Требуемый вывод был упомянут в столбце result, то же самое необходимо обновить до столбца concatenatecount с помощью sql-запроса... помогите мне в этом

CHill60

Раздел "Что я пробовал" предназначен для кода, который вы пробовали и с которым у вас возникли проблемы.
Почему 'ABNS конструкций BNREDDY нагар', 'АСС общества, Майсур, БЛР" и " задать предприятий всех имеющих результат = 1?
Ваш вопрос совсем не ясен

Tryingtobeageek

смотрите, дубликаты есть в колонке, мне нужен раздел ... уточненным в столбце concatenarecount присоединиться сцепить столбец

1 Ответов

Рейтинг:
2

CHill60

То, что вы ищете, - это "оконные функции" - здесь есть статья - Оконные функции в SQL Server-простой разговор[^]

Я создал ваши данные в такой таблице

create table demo
(
	id int identity(1,1),
	[Concatenate]	 nvarchar(125),
	concatenatecount int,
	result int
)
insert into demo values
('ABNS CONSTRUCTIONS BNREDDY NAGAR',	NULL,	1),
('ABNS CONSTRUCTIONS BNREDDY NAGAR',	NULL,	2),
('ABNS CONSTRUCTIONS BNREDDY NAGAR',	NULL,	3),
('ACC LIMITED, MYSORE ROAD, BLR',	NULL,	1),
('ACC LIMITED, MYSORE ROAD, BLR',	NULL,	2),
('ASK ENTERPRISES',	                NULL,	1),
('ASK ENTERPRISES',	                NULL,	2),
('ASK ENTERPRISES',	                NULL,	3),
('ASK ENTERPRISES',	                NULL,	4)

С помощью оконных функций вы можете указать, как вы хотите сгруппировать данные, используя OVER клаузула-другими словами, нет никакой необходимости в GROUP BY... Подобный этому:
select id, [Concatenate], result,
		COUNT(*) OVER (PARTITION BY [Concatenate]), 
		ROW_NUMBER() OVER (PARTITION BY [Concatenate] ORDER BY [Concatenate])
from demo
И это дало мне выход:
1	ABNS CONSTRUCTIONS BNREDDY NAGAR	1	3	1
2	ABNS CONSTRUCTIONS BNREDDY NAGAR	2	3	2
3	ABNS CONSTRUCTIONS BNREDDY NAGAR	3	3	3
4	ACC LIMITED, MYSORE ROAD, BLR		1	2	1
5	ACC LIMITED, MYSORE ROAD, BLR		2	2	2
6	ASK ENTERPRISES				1	4	1
7	ASK ENTERPRISES				2	4	2
8	ASK ENTERPRISES				3	4	3
9	ASK ENTERPRISES				4	4	4
Я включил "результат" только для того, чтобы проверить ожидаемые результаты - это последние два столбца, которые содержат необходимую вам информацию