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

Откуда:
Сообщений: 34
Здравствуйте !
Есть процедура (procedura), которая принимает параметр для фильтрации (@filter)
и примерный динамический запрос :
set @sql_string =
'
WITH _table AS
(
select top(150)
name
,last_name
,(case
when '+convert(varchar,@is_admin)+'=1 then //** подсчёты **/
else 0
end) as lalala
FROM table
where ' + @filter + '
)

select * from _table
'

execute (@sql_string)


(возможно код немного ошибочный проблема не в коде а в логике:) )

И при выполнении
exec procedura 'lalala=800'

выдаёт такую ошибку

Invalid column name 'lalala'.



Внимание вопрос, как правильно мне организовать динамический запрос который принимал бы поле lalala и мог отрабатываться
в условии where

Решение вида:
select * from _table
where @filter --- Не подходит, это нужно делать именно внутри CTE

да и передавать параметр @filter вида:

'(case
when '+convert(varchar,@is_admin)+'=1 then //** подсчёты **/
else 0
end) =800' -- плохое решение так как подсчеты в будущем будут меняться
12 июл 12, 15:43    [12857689]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пжл.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select * 
from 
select top(150)
name
,last_name
,(case
when '+convert(varchar,@is_admin)+'=1 then //** подсчёты **/
else 0
end) as lalala
FROM table 
order by ...
) a
where ' + @filter + '
12 июл 12, 15:50    [12857751]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пжл.  [new]
Nelly_lucky
Member

Откуда:
Сообщений: 34
Спасибо, но условие
where за пределами CTE, а мне нужно что бы отсекало именно внутри таблицы _table

(это нужно подсчитывать количество записей для данного фильтра с выражения CTE

что то вида
SELECT *
--
,(SELECT COUNT(1) FROM _table ) AS records_count
FROM _table
WHERE
_table.rownumber BETWEEN '+convert(nvarchar,@start_string)+' AND '+convert(nvarchar,@end_string)+'
)
12 июл 12, 16:14    [12857967]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пжл.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Nelly_lucky
where за пределами CTE, а мне нужно что бы отсекало именно внутри таблицы _table

Нет никакаго поля lalala в вашей _table. А есть вычисляемый столбец. К которому можно обратится только во внешнем запросе.
12 июл 12, 17:34    [12858607]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом пжл.  [new]
Nelly_lucky
Member

Откуда:
Сообщений: 34
спасибо
13 июл 12, 18:01    [12864733]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить