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

Откуда:
Сообщений: 520
Вот так - работает:
WITH c (Id,Name,DuplicateCount) 
as
(
SELECT Id,Name,
ROW_NUMBER() OVER(PARTITION BY  Name ORDER BY Id) AS DuplicateCount
FROM Tbl
)
delete
 FROM c
WHERE DuplicateCount > 1
 


А вот так - херь несет про какую-то ошибку:
begin tran



WITH c (Id,Name,DuplicateCount) 
as
(
SELECT Id,Name,
ROW_NUMBER() OVER(PARTITION BY  Name ORDER BY Id) AS DuplicateCount
FROM Tbl
)
delete
 FROM c
WHERE DuplicateCount > 1
 




select *  from Tbl
rollback tran


[quote 'Incorrect syntax near 'c'.'[/quote]

В упор не пойму, что во втором коде не так?
24 окт 17, 20:13    [20896687]     Ответить | Цитировать Сообщить модератору
 Re: Странный глюк с CTE и транзакцией:  [new]
msLex
Member

Откуда:
Сообщений: 7730
Blackmore
begin tran



;WITH c (Id,Name,DuplicateCount) 
as
(
SELECT Id,Name,
ROW_NUMBER() OVER(PARTITION BY  Name ORDER BY Id) AS DuplicateCount
FROM Tbl
)
delete
 FROM c
WHERE DuplicateCount > 1
 




select *  from Tbl
rollback tran
24 окт 17, 20:18    [20896699]     Ответить | Цитировать Сообщить модератору
 Re: Странный глюк с CTE и транзакцией:  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Для удаления поля Id и Name - лишние. Некрасиво!
25 окт 17, 12:03    [20898234]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить