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

Откуда:
Сообщений: 396
есть таблица

ID Name Count
1 Вася
2 Петя
3 Вася
4 Саша

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

ID Name Count
1 Вася 2
2 Петя 1
3 Вася 2
4 Саша 1
19 сен 13, 17:21    [14860741]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
MLans
как можно проапдейтить таблицу так, чтобы напротив каждого имени было колличество тезок? Без подзапросов.
Никак.
Разве что в 2012
19 сен 13, 17:25    [14860770]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
CREATE table #t(id int, name varchar(50), con int)
insert into #t
select 1,'Вася',0
union all
select 2,'Петя',0
union all
select 3,'Вася',0
union all
select 4,'Паша',0
union all
select 5,'Маша',0

UPDATE #t
SET con=t.cnt
FROM(
select tt.id, tt.name, (SELECT COUNT(*) FROM #t WHERE name=tt.name) as cnt from #t tt) t
WHERE #t.id=t.id

select * from #t

DROP TABLE #t
19 сен 13, 17:53    [14860972]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Извиняюсь, не увидел сразу что без подзапросов!
19 сен 13, 17:57    [14861009]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
CREATE table #t(id int, name varchar(50), con int)
insert into #t
select 1,'Вася',0
union all
select 2,'Петя',0
union all
select 3,'Вася',0
union all
select 4,'Паша',0
union all
select 5,'Маша',0;

with cte as
(
  select con, count(*) over(partition by name) cnt
  from #t
)
update cte
set con = cnt;

select * from #t

DROP TABLE #t

И никаких подзапросов.
19 сен 13, 18:19    [14861101]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Работает, начиная с версии MSSQL 2005.
19 сен 13, 18:19    [14861107]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
Гость333
И никаких подзапросов.


А смысл-то без подзапросов ?
Ну, формально тут нет подзапросов, а фактически всё то же самое.
19 сен 13, 21:23    [14861645]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить колличество повторяющихся записей?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
>> а фактически всё то же самое.

MLans
Без подзапросов.

умиляет это требование.
а давайте еще усложним задачу - без обращений к таблице, или там - не используя
клавиатуру! только хардкор, только квантовые вычисления!
20 сен 13, 09:43    [14862413]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить