2016-03-12 2 views
0

У меня есть два оператора select, которые используют три таблицы. Мне нужно иметь возможность создать таблицу из них и сказать, если оператор select 1 затем назначит пользователю значение = 10, если выбрать оператор 2, тогда присвойте user_id значение = 7. В моей новой таблице я бы получил user_id и его значение был назначен, если оператор case оценивает значение true. Я продолжаю получать синтаксические ошибки для любых заявлений о делах, которые я пишуОператоры case с несколькими объединениями

SELECT m.user_id,f.manager_id 
from sales b 
JOIN promotions m on b.user_id = m.user_id 
JOIN promotions f on b.user_sub_id = f.user_id 
where m.address = f.address 
and m.post = '95103' 

SELECT m.user_id,f.manager_id 
from sales b 
JOIN promotions m on b.user_id = m.user_id 
JOIN promotions f on b.user_sub_id = f.user_id 
where m.address = f.address 
and m.post = '98746' 
AND f.address <> 'NULL' AND 
NOT EXISTS (SELECT 1 
FROM payments c 
WHERE c.member_id = b.user_sub_id AND 
c.status <> 'NULL' 
AND c.info = 'T' 
) 
+0

Возможная Дубликат [заявления в случае с псевдонимом] (http://stackoverflow.com/questions/35963293/case-statements-with-alias) – Migo

+0

Похоже Migo уже ответил на этот вопрос. Тем не менее, я хотел бы отметить, что, хотя 'f.address <> 'NULL'' и' c.status <> NULL'' не будут вызывать синтаксические ошибки, я не думаю, что они будут работать так, как вы ожидаете (если эти столбцы буквально не содержат строку '' NULL''. Если, с другой стороны, они будут просто 'NULL', вам нужно использовать' f.address IS NOT NULL' и 'c.status IS NOT NULL' вместо этого. – gmm

ответ

2

Что вы сделали до сих пор? Не требуется никаких заявлений.

select * 
into #Output 
from (
-- select statement 1 
select 10 as UserValue 
, m.user_id 
, f.manager_id 

union all 

-- select statement 2 
select 7 as UserValue 
, m.user_id 
, f.manager_id 
) a 
Смежные вопросы