Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использоване CTE и условия IF / 11 сообщений из 11, страница 1 из 1
21.11.2013, 13:01
    #38472786
Bryk_Alien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Код: plaintext
1.
- MSQL 2008
- Среда SSMS

Здраствуйте,
В хр. процедуре пишу код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH TTT AS
(
sql-запрос
)

IF 1=1
SELECT * FROM TTT

Получаю ошибку:
Сообщение 156, уровень 15, состояние 1, строка 43
Неправильный синтаксис около ключевого слова "IF".

А так:
Код: sql
1.
2.
3.
4.
5.
6.
WITH TTT AS
(
sql-запрос
)

SELECT * FROM TTT

данные выводятся

Подскажите, можно ли использовать логические условия типа IF вместе с CTE?
И как мне быть, если в зависимости от разных условий мне нужно вывести разный набор данных из табличного выражения?
...
Рейтинг: 0 / 0
21.11.2013, 13:09
    #38472801
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Нельзя.
Особенно это досадно, если надо написать IF EXISTS() для, например, рекурсивного CTE.
Но CTE - это просто часть одного-единственного запроса, живущее только до конца
выполнения этого запроса.
Так что "разный набор данных" возможен только в виде INION [ALL] и с соответствующими
условиями в WHERE
...
Рейтинг: 0 / 0
21.11.2013, 13:11
    #38472803
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Опечатался - не INION, а UNION, конечно же
...
Рейтинг: 0 / 0
21.11.2013, 13:14
    #38472813
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
авторИ как мне быть, если в зависимости от разных условий мне нужно вывести разный набор данных из табличного выражения?

Убрать CTE и положить результат (sql-запрос) в табличную переменную\временную таблицу.
...
Рейтинг: 0 / 0
21.11.2013, 13:50
    #38472877
Bryk_Alien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Спасибо всем,
очень досадно... ладно, буду что-нибудь придумывать
...
Рейтинг: 0 / 0
21.11.2013, 13:53
    #38472879
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Bryk_AlienВ хр. процедуре пишу код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH TTT AS
(
sql-запрос
)

IF 1=1
SELECT * FROM TTT

Получаю ошибку:
так а чем не устраивает такое?
Код: sql
1.
2.
3.
4.
5.
WITH TTT AS
(
sql-запрос
)
SELECT * FROM TTT WHERE 1 = 1
...
Рейтинг: 0 / 0
21.11.2013, 13:59
    #38472888
sdet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
ShakillBryk_AlienВ хр. процедуре пишу код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH TTT AS
(
sql-запрос
)

IF 1=1
SELECT * FROM TTT

Получаю ошибку:
так а чем не устраивает такое?
Код: sql
1.
2.
3.
4.
5.
WITH TTT AS
(
sql-запрос
)
SELECT * FROM TTT WHERE 1 = 1


Условие может быть вне таблицы TTT
...
Рейтинг: 0 / 0
21.11.2013, 14:01
    #38472893
Bryk_Alien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Shakill,

Да там я "догадался" написать универсальный запрос, который выводит данные для трёх состояний - с различной группировкой, количеством и названием полей. для нескольких довольно различных по устройству отчётов...
...
Рейтинг: 0 / 0
21.11.2013, 14:05
    #38472900
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
Bryk_AlienДа там я "догадался" написать универсальный запрос, который выводит данные для трёх состояний - с различной группировкой, количеством и названием полей. для нескольких довольно различных по устройству отчётов...
А поместить cte в представление ?
...
Рейтинг: 0 / 0
21.11.2013, 14:13
    #38472911
sdet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
GloryBryk_AlienДа там я "догадался" написать универсальный запрос, который выводит данные для трёх состояний - с различной группировкой, количеством и названием полей. для нескольких довольно различных по устройству отчётов...
А поместить cte в представление ?
Да там с параметрами наверное, лучше table valued function
...
Рейтинг: 0 / 0
21.11.2013, 14:24
    #38472930
Bryk_Alien
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использоване CTE и условия IF
GloryА поместить cte в представление ?Кстати да, ка вариант... Запрос в СТЕ - без параметров, просто, цук, много кода.
Спасибо! +)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использоване CTE и условия IF / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]