2013-05-16 3 views
0

Мне нужно запросить набор данных в SQL Server и иметь один из столбцов возврата на основе одного из двух подзапросов. Управление подзапросом осуществляется из значения другого столбца в запросе. Какой-то базовый язык псевдо-запросов того, что я пытаюсь сделать:Условные соединения в SQL Server

select col1, col2, col3, 
if col3 = 1 
    (select count(*) from table2 where table2.col1 = table1.col1) as count1 
else 
    (select count(*) from table3 where table3.col1 = table1.col1) as count1 
from table1 

Каков наилучший способ для этого?

ответ

2
SELECT col1, col2, col3, 
    CASE WHEN col3 = 1 THEN 
     (SELECT count(*) 
     FROM table2 
     WHERE table2.col1 = table1.col1) 
    ELSE 
     (SELECT count(*) 
     FROM table3 
     WHERE table3.col1 = table1.col1) 
    END AS count1 
FROM table1 
+0

Awesome. благодаря – user2391532

0

Вы должны объявить переменную и SELECT столбец col3.

Или вы можете сделать блок CASE...WHEN.

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