2015-02-10 3 views
0

У меня есть таблица А с [названием агента] и [проведено] колоннамиКак использовать различные значения столбцов из другой таблицы на основе значения на текущем столбце таблицы в сервере SQL

enter image description here

У меня есть другая таблица B с [Агент имен], [менеджер] и [SDI] колонок

enter image description here

Мне нужен результат, как в таблице ниже

enter image description here

таблица результатов основана на таблице A и таблице B. Если значение поля [Проведено] в таблице A равно 0, тогда мне нужно получить значение столбца [manager] из таблицы B, иначе, если мой [проведенный ] значение столбца в таблице A равно 1, тогда мне нужно получить значение столбца [SDI] из таблицы B. Как я могу это достичь?

Спасибо adavance

+0

'select ... case when [проведенный] = 1 then manager else sdi end', в основном? –

+1

Возможно, вы захотите изучить нормализацию. Сохранение имен в более чем одной таблице не вызовет ничего, кроме боли в долгосрочной перспективе. Прочитайте о нормализации и облегчите свою жизнь. –

ответ

1

Вы можете использовать case заявление:

case when ConductedBy = 0 then [Manager] when ConductedBy = 1 then [SDI] end 
2

Попробуйте это:

SELECT 
    a.agentName, 
    CASE 
    WHEN a.conductedBy=0 THEN b.manager 
    ELSE b.sdi 
    END AS conductedBy 
FROM tableA AS a 
JOIN tableB AS b ON a.agentName=b.agentName 

или это:

SELECT 
    a.agentName, 
    CASE a.conductedBy 
    WHEN 0 THEN b.manager 
    ELSE b.sdi 
    END AS conductedBy 
FROM tableA AS a 
JOIN tableB AS b ON a.agentName=b.agentName 

только для MySQL работы этого :

SELECT 
    a.agentName, 
    IF(a.conductedBy=0, b.manager, b.sdi) AS conductedBy 
FROM tableA AS a 
JOIN tableB AS b ON a.agentName=b.agentName 
+0

Предложение IF в SELECT QUERY. Отличная идея, но не работает в версии SQLServer до 2014 года. – knkarthick24

+0

Извините, что я забыл – schonny

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