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

Откуда: Краснодар
Сообщений: 71
В таблице есть поля USLUGA, TARIF, DATA.
нужен скрипт который бы для записей с одинаковыми USLUGA и TARIF оставил только те у которых DATA меньше, а остальные удалил. подскажите, плиз...
17 сен 09, 13:46    [7673057]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите запрос пожалуйста  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
тут искали ?
-------------------------------------
Jedem Das Seine
17 сен 09, 13:48    [7673081]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите запрос пожалуйста  [new]
KIT810
Member

Откуда: Краснодар
Сообщений: 71
смотрел,подобного нет
17 сен 09, 14:10    [7673252]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите запрос пожалуйста  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
KIT810, а что у Вас не получается?
17 сен 09, 14:10    [7673256]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите запрос пожалуйста  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
KIT810
смотрел,подобного нет


Прежде чем раздувать мехи баяна пользуйтесь поиском…

DECLARE  @t TABLE (USLUGA int, TARIF int, DATA datetime)

INSERT INTO @t(USLUGA, TARIF, DATA)
SELECT 1,1,'20090101' UNION ALL
SELECT 1,1,'20090201' UNION ALL
SELECT 2,1,'20090101' UNION ALL
SELECT 2,1,'20090101' UNION ALL
SELECT 3,1,'20090101' 

--Кандидаты на удаление…
;WITH CTE AS(SELECT ROW_NUMBER()OVER(PARTITION BY USLUGA,TARIF ORDER BY DATA) N,* FROM @t)
SELECT * FROM CTE WHERE N>1
17 сен 09, 14:38    [7673489]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите запрос пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DENIS_CHEL
KIT810
смотрел,подобного нет


Прежде чем раздувать мехи баяна пользуйтесь поиском…

DECLARE  @t TABLE (USLUGA int, TARIF int, DATA datetime)

INSERT INTO @t(USLUGA, TARIF, DATA)
SELECT 1,1,'20090101' UNION ALL
SELECT 1,1,'20090201' UNION ALL
SELECT 2,1,'20090101' UNION ALL
SELECT 2,1,'20090101' UNION ALL
SELECT 3,1,'20090101' 

--Кандидаты на удаление…
;WITH CTE AS(SELECT ROW_NUMBER()OVER(PARTITION BY USLUGA,TARIF ORDER BY DATA) N,* FROM @t)
SELECT * FROM CTE WHERE N>1
+100
А удаление ещё проще:
;WITH CTE AS(SELECT ROW_NUMBER()OVER(PARTITION BY USLUGA,TARIF ORDER BY DATA) N FROM @t)
DELETE CTE WHERE N>1
17 сен 09, 18:07    [7675494]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить