powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разные варианты параметров
25 сообщений из 28, страница 1 из 2
Разные варианты параметров
    #39603920
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Пусть имеется такой еще сырой SQL-запрос. Нужно выгружать данные в зависимости от того, какие заданы параметры. Например, Надо выгрузить по каким то городам, по каким то клиентам, юр лицам, по ТТ. Учитывая, что задаем, например, определенный клиент, а остальные поля-параметры не задаются. Еще сочетание, например, Города + Клиенты, Юр лица+Код ТТ, и т.д. Возникает вопрос, как написать запрос так, чтобы был универсальным для задании разных параметров.

SQL-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Declare @Город varchar(8)
Declare @Юрлицо varchar(8)
Declare @Клиент varchar(8)
Declare @КодТТ varchar(8)

SELECT
	[Город],
	[Юр лицо],
	[Клиент],
	[Код ТТ],
	[Отгрузки шт],
	[Возвраты шт],
	[Реализация шт]
FROM
	[База данных]
WHERE
	[Город]= @Город
	AND
	[Юр лицо] = @Юрлицо
	AND
	[Клиент] = @Клиент
	AND
	[Код ТТ] = @КодТТ

...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603921
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Код: sql
1.
[Город]=isnull(@Город,[Город])
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603922
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603926
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopellyferzmikk,

Код: sql
1.
[Город]=isnull(@Город,[Город])

Этот случай характерен, если задаем один город, а если несколько городов?
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603933
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkа если несколько городов?Смотря как это сделать... скорее всего, придётся использовать функцию поиска подстроки (или регэксп).
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603934
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaferzmikkа если несколько городов?Смотря как это сделать... скорее всего, придётся использовать функцию поиска подстроки (или регэксп).
Предположим, @Город = 'Город1,Город2'. Или передача в параметр в виде массива, хотя не знаю возможно ли так в SQL.
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603936
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkЗдравствуйте!

... чтобы был универсальным для задании разных параметров.

[/src][/spoiler]

Динамически собирайте листинг запроса, за тем Exec()
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603937
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
.....
where ((@Город is null) or ([Город] = @Город))
or ((@Юрлицо is null) or ([Юрлицо] = @Юрлицо))
or ((@Клиент is null) or ([Клиент] = @Клиент))    



Имейте ввиду, что для тех, кто пишет переменные или столбцы кириллицей в аду приготовлены отдельные
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603938
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кострища. ))
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603939
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, ошибся. В запросе надо "AND" ставить

Код: sql
1.
2.
3.
4.
.....
where ((@Город is null) or ([Город] = @Город))
AND ((@Юрлицо is null) or ([Юрлицо] = @Юрлицо))
AND ((@Клиент is null) or ([Клиент] = @Клиент))
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603946
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkKopellyferzmikk,
Код: sql
1.
[Город]=isnull(@Город,[Город])

Этот случай характерен, если задаем один город, а если несколько городов?
Какой вопрос(пример) - такой ответ...
Ты же разбираешь @Город на отдельные значения...
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39603957
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkНадо выгрузить по каким то городам.
А если несколько городов?
Предположим, @Город = 'Город1,Город2'.а вы задайте этот вопрос тому кто такую базу спроектировал.
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604044
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkПредположим, @Город = 'Город1,Город2'
Код: sql
1.
2.
3.
(@Город IS NULL OR ','+[Город]+',' LIKE '%,'+@Город+',%')
AND (@Юрлицо IS NULL OR ','+[Юрлицо]+',' LIKE '%,'+@Юрлицо+',%')
......................
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604046
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если в виде массива передавать, то SQL сможет распознать?
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604051
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xml передавайте,в ХП его разбирайте как вам надо
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604094
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onexml передавайте,в ХП его разбирайте как вам надоЧто значит ХП?
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604095
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,
Хранимая процедура
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604096
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хранимая процедура Stored Procedure
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604110
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В SSRS в таких случаях используется IN.
Код: sql
1.
(@Город is null) or ([Город] IN @Город)
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604125
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloperВ SSRS в таких случаях используется IN.
Код: sql
1.
(@Город is null) or ([Город] IN @Город)

А это тут при чём?
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604159
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapА это тут при чём?
ferzmikkВозникает вопрос, как написать запрос так, чтобы был универсальным для задании разных параметров.

Так работает запрос, когда параметр не указан, указан с одним значением, указан с множеством значений.
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604173
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloper,

вам говорят что в TSQL это работать не будет, а то что есть в SSRS остаётся там же :)
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604177
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
SSRS запрос на сервер в конечном итоге отправляет в виде T-SQL.
Если вместо @Город подставлять подзапрос по таблице значений параметра, разве не будет работать?
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604180
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloperTaPaK,
SSRS запрос на сервер в конечном итоге отправляет в виде T-SQL.
Если вместо @Город подставлять подзапрос по таблице значений параметра, разве не будет работать?
конечно будет, но нафиг она такая работа надо
...
Рейтинг: 0 / 0
Разные варианты параметров
    #39604193
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимально - написать приложение, которое будет генерить запросы.
Ту же CLR фабрику, например.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разные варианты параметров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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