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

Откуда:
Сообщений: 271
Подскажите пожалуйста, как подправить запрос.
Возникает ошибка "Неправильный синтаксис около ключевого слова "as""

use msdb
declare @date date= '20141201'
declare @t table (Линия Nvarchar(100),ЦП Nvarchar(100),Дата date);

WITH 
Corp AS(SELECT *,c=COUNT(*)OVER(PARTITION BY [id_ЦП],[Дата],[Вид1],[Вид2]
	   ,[Вид1]+[Вид2] as s  FROM [Access_BD]...[Платежи] where [Дата] >= @date)

insert into @t (Линия,ЦП,Дата)


SELECT distinct Линия='К', [id_ЦП], [Дата] FROM Corp WHERE c>1 and s>0 order by [Дата] desc;

select Линия,ЦП,convert(nvarchar(10),Дата,104) as Дата from @t


Нужно исключить строки, где сумма всех колонок со значениями - нулевые, отбирая дублирующиеся строки в исходной таблице на указанную дату
18 дек 14, 16:35    [17018168]     Ответить | Цитировать Сообщить модератору
 Re: Подправить запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
2viper2viper,

правую скобку для OVER() добавьте
18 дек 14, 16:39    [17018200]     Ответить | Цитировать Сообщить модератору
 Re: Подправить запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
2viper2viper,

правую скобку для OVER() добавьте
Кстати, если есть "c=", то "AS s" уже нельзя...
Должно быть одно имя у одного поля.
18 дек 14, 16:40    [17018214]     Ответить | Цитировать Сообщить модератору
 Re: Подправить запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Исправил. Спасибо iap . Запрос выполняется
Но результат пока не верный. Условие "and s>0" режет и в результате не выгружается ни одной строки
Логика запроса вроде как правильная..

Нужно выгрузить дублирующиеся строки с исходной таблицы, но при этом игнорировать строки, по которым по всем числовым полям (Вид1,Вид2..) указаны "0"

use msdb
declare @date date= '20141201'
declare @t table (Линия Nvarchar(100),ЦП Nvarchar(100),Дата date);

WITH 
Corp AS(SELECT *,c=COUNT(*)OVER(PARTITION BY [id_ЦП],[Дата],[Вид1],[Вид2])
	   , s= [Вид1]+[Вид2]   FROM [Access_BD]...[Платежи] where [Дата] >= @date)

insert into @t (Линия,ЦП,Дата)


SELECT distinct Линия='К', [id_ЦП], [Дата] FROM Corp WHERE c>1 and s>0 order by [Дата] desc;

select Линия,ЦП,convert(nvarchar(10),Дата,104) as Дата from @t
18 дек 14, 17:11    [17018443]     Ответить | Цитировать Сообщить модератору
 Re: Подправить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
2viper2viper
но при этом игнорировать строки, по которым по всем числовым полям (Вид1,Вид2..) указаны "0"

и что же тогда s>0 делает неправильно, когда " режет" эти записи ?
18 дек 14, 17:14    [17018463]     Ответить | Цитировать Сообщить модератору
 Re: Подправить запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Glory
2viper2viper
но при этом игнорировать строки, по которым по всем числовым полям (Вид1,Вид2..) указаны "0"

и что же тогда s>0 делает неправильно, когда " режет" эти записи ?


isnull забыл добавить
18 дек 14, 17:52    [17018678]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить