2016-07-15 6 views
0

У меня есть две таблицы в MSSQL. Таблица 2 имеет такие столбцы, как Tcode (varchar) like ('1,2,3'), CCode (varchar), подобный ('45, 2,35 '), visitdate (datetime). visitdate является общим в обоих.Печать 'и' там, где условие sql server

Таблица 1 содержит коды варшара варшара.

Таблица2 имеет тип столбца как Int/SmallInt. Из таблицы1 я объявила требуемые переменные.

Вот сценарий:

declare @condition varchar(10)-- returns ('1,2,3') 
declare @cdatetime datetime 
declare @Ccodes varchar(500) 
declare @Tcodes varchar(500)-- returns ('1,2,3') 
---------------------------------------------- 
Here @condition returns 'And' or 'Or' strings 
-------------------------------------------------- 
Table1: 
select @cdatetime=Startdatetime,@Ccodes= Ccode, @condition=condition,@Tcodes=Tcode 
from Table1 

Table2: 
select sum(rate) from table2 where visitdate>[email protected] 
and Tcode in (@TCodes) 'PRINT @condition' Ccode in (@Ccodes)) 

Здесь на основе переменной @condition я должен напечатать логический оператор.

Есть ли способ распечатать ключевое слово в SQL. Я использую услуги интеграции BI-студии Visual Studio (окно запроса T-sql).

Спасибо.

ответ

2

Вы можете либо использовать динамический SQL для создания строки и вызвать:

EXECUTE sp_executesql

Или просто вычислить параметр в строке:

SELECT SUM(rate) 
FROM table2 
WHERE visitdate >= @cdatetime 
     AND ((Tcode IN (@TCodes) 
       AND @condition = 'AND' 
       AND Ccode IN (@Ccodes) 
      ) 
       OR ((Tcode IN (@TCodes) 
        AND @condition = 'OR' 
        OR Ccode IN (@Ccodes) 
        ) 
       ) 
      ) 

Это проверялось, но где положение просто имеет условие, которое имеет дело с каждой опцией для AND и OR.

+0

Мне нужно только одно условие за раз. Значение запроса изменяется, когда я использую '' AND'' & ''OR''. Условие проверки для обоих будет проблемой производительности. его огромный стол. –

+0

@InayathullahKhan SQL-сервер будет оценивать условие перед запуском запроса и использовать только действительную часть аргумента where. Таким образом, он увидит '@condition = 'AND'' и использует эту часть предложения WHERE, поскольку он знает, что другая сторона будет оценивать FALSE. На мой взгляд, это не должно влиять на производительность, но лучше всего протестировать его. – Tanner

Смежные вопросы