Конкатенация строк с реальной таблицей SQL SERVER
У всех у меня есть этот запрос в SQL SERVER
declare @nivel AS INT
set @nivel =3
SELECT * FROM TABLE1 AS A inner join TABLE2 as B ON A.COL1 = b.COL + @NIVEL
Я хочу объединить переменную, чтобы иметь A.COL1 = b.COL3
БЕЗ конвертировать весь запрос в '' STRING
2 ответа
Решение
Попробуй это
select *
from Table1 a
join Table2 b on a.Col1=case @nivel
when 1 then b.Col1
when 2 then b.Col2
when 3 then b.Col3
...
end
однако это очень плохой дизайн. Вы должны рассмотреть вопрос о переработке вашего Table2
содержать что-то вроде
| ColNo | ColumnData
| 1 | Data of column 1
| 2 | Data of column 2
| 3 | Data of column 3
тогда ваш запрос будет более простым
select *
from Table1 a
join Table2 b
on a.Col1 = b.ColumnData
and b.ColNo = @nivel
Пытаться:
declare @nivel AS INT
set @nivel =3
SELECT * FROM TABLE1 AS A
inner join TABLE2 as B ON A.COL1 = b.COL + CAST(@NIVEL AS CHAR)