Как использовать несколько таблиц, используя определенные условия - PullRequest
0 голосов
/ 30 мая 2019

У меня есть две таблицы TableA и TableB для этих таблиц, данные будут заполняться на основе определенного процесса (значит, TableA будет похожа на временную таблицу, если значение будет окончательно установлено, тогда данные будут перемещены в TableB)

на основе этого Xусловие Я выберу значение из TableA else из TableB

If X=10 condition 
select col1,col2,col3,col4 from TableA
else
select col1,col2,col3,col4 from TableB

Обе таблицы TableA и TableB будут иметь одинаковую структуру таблицы, поэтому здесь я не хочу снова использовать один и тот же оператор кода в else, изменив только имя таблицы. Любым другим способом, который можно использовать, не повторяя оператора SELECT снова путем изменения таблицы.

Ответы [ 4 ]

1 голос
/ 30 мая 2019

или вы также можете попробовать:

DECLARE @x AS INT
DECLARE @sqlquery AS NVARCHAR(100)

SET @x = 10 --ignore this if you already have a value for x

SET @sqlquery = 'SELECT * FROM '+ CASE WHEN @x = 10 THEN 'TableA' ELSE 'tableB' END

EXEC SP_EXECUTESQL @sqlquery

вы также можете прочитать: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-2017

1 голос
/ 30 мая 2019

Я думаю, вы хотите это:

DECLARE @tableName varchar(20)
IF 1=1
set @tableName = 'table1'
ELSE
set @tableName = 'table2'

EXEC ('SELECT * FROM ' + @tableName)
0 голосов
/ 30 мая 2019

Я бы достиг этого с помощью переменной и запроса на объединение.Переменная позволяет вам дать истинное ложное условие для условия where, чтобы все возвращалось из таблицы, которую вы хотите, и ничего из таблицы, которую вы не хотите.Структура таблиц позволяет использовать запрос в операторе объединения, чтобы вы могли видеть весь код в одном месте.

Declare @x int = 10
Select col1, col2, col3, col4 from TableA where @x=10
Union
Select col1, col2, col3, col4 from TableB where @x<>10;
0 голосов
/ 30 мая 2019

Вы можете просто свернуть свое условие в оператор UNION.

Если @condition = 1, мы выбираем только из таблицы A, иначе мы выбираем только из таблицы B.

DECLARE @condition bit

SET @condition = 0

SELECT * FROM  [dbo].[TableA] WHERE @condition = 1
UNION
SELECT * FROM  [dbo].[TableB] WHERE @condition != 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...