2017-01-17 17 views
0

У меня есть несколько (8) таблиц, у которых есть столбец с именем Encounter_ID. Тот же Encounter_ID может отображаться в одной или нескольких таблицах. Конечной целью является, чтобы увидеть, какие таблицы конкретный Encounter_ID появляется.SQL-флаги/IF-инструкции/новый столбец, связывающий общие значения столбца

Я хотел бы создать столбцы, называемые Table1_Flag, Table2_Flag и т.д., со значением «Y» или «N». Я использую Microsoft SQL Server 2014, а затем импортирую код в программное обеспечение уровня презентации, которое позволяет пользователям выбирать конкретную встречу с целью увидеть, в какую таблицу она попадает.

Я медсестра, работающая в отделе ИТ. поэтому у меня есть базовый опыт SQL-кодирования и я буду признателен за любую помощь.

Таблица 1

Encounter_ID 
1 
2 
3 
4 
5 
8 
9 
11 

Таблица 2

Encounter_ID 
2 
3 
5 
6 
7 
11 
13 

Таблица 3

Encounter_ID 
1 
3 
5 
6 
10 
12 
13 

ответ

0

Нечто подобное?

select * 
from (
    select 'table1' tablename, encounter_id from table1 union all 
    select 'table2' tablename, encounter_id from table2 union all 
    select 'table3' tablename, encounter_id from table3 
) t 
where encounter_id = 10; 

http://rextester.com/LGQZ72769

+0

Msg 8155, уровень 16, состояние 2, строка 18 Без названия столбца не было указано для столбца 1 'т'. Получение этой ошибки при запуске запроса –

+0

Я не уверен, почему эта ошибка наступает. В ответ я добавил рабочую демонстрацию. Можете ли вы предоставить мне точный запрос, который вы используете? – GurV

0
SELECT DISTINCT t.Encounter_ID, 
CASE WHEN t1.encounter_ID IS NULL THEN 'N' ELSE 'Y' END as Table1_Flag, 
CASE WHEN t2.encounter_ID IS NULL THEN 'N' ELSE 'Y' END as Table2_Flag, 
CASE WHEN t3.encounter_ID IS NULL THEN 'N' ELSE 'Y' END as Table3_Flag 
FROM 
(SELECT Encounter_ID FROM Table1 union all 
SELECT Encounter_ID FROM Table2 union all 
SELECT Encounter_ID FROM Table3) t 
LEFT JOIN Table1 t1 ON t.Encounter_ID = t1.Encounter_ID 
LEFT JOIN Table1 t2 ON t.Encounter_ID = t2.Encounter_ID 
LEFT JOIN Table1 t3 ON t.Encounter_ID = t3.Encounter_ID 
ORDER BY t.encounter_id 

Вот рабочий пример http://sqlfiddle.com/#!9/516dbc/7/0