Конкатенация строк с реальной таблицей 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)
Другие вопросы по тегам