Member 13138564 Ответов: 1

Как я использую условие case?


Я использую условие case для получения результата если я хочу получить 4 недели то он может получить 4
или если я хочу получить 5 недель, то он может принести 5 недель.
не могли бы вы мне помочь?

Что я уже пробовал:

Где случай, когда len (Week)= '24', то неделя в ('82','83','84','88','99')
ещё
когда len (Week)= '19' , то неделя в ('82','83','84','88')
Иди
--

CHill60

Ты не можешь. Вам нужно будет использовать динамический SQL. Что такое "Неделя"?

Слово предупреждения LEN (variable) возвращает целочисленный результат, а не varchar.

1 Ответов

Рейтинг:
12

CHill60

В дополнение к моему предыдущему комментарию вот конкретный пример:

declare @c varchar(50) = '123456789012345678901234'

declare @sql nvarchar(max) = 'select * from xxx
WHERE WEEK in '
IF len(@c) > 24 
BEGIN
	SET @sql = @sql + '(''81'',''82'',''84'',''83'')'
END
ELSE 
BEGIN
	SET @sql = @sql + '(''81'',''82'',''84'',''83'',''86'')'
END
--PRINT @sql
EXEC sp_sqlexec @sql


Member 13138564

Да я использую динамический sql для этого и неделю получаю изменения скажем пример
на сегодня я хочу принести '81','82','84','83'
а в другой день я хочу получить 5 недель из базы данных, то есть '81','82','84','83','86'

CHill60

Я изменил свое решение, чтобы сделать более очевидным, что вам нужно сделать.