我有多个(8)表都有一个名为Encounter_ID
的列。相同的Encounter_ID
可以出现在一个或多个表中。最终目标是查看特定Encounter_ID
出现在哪些表格中。
我想创建名为Table1_Flag
,Table2_Flag
等的列,其值为“Y”或“N”。我正在使用Microsoft SQL Server 2014,然后将代码导入到表示层软件中,该软件允许用户选择与目标相关的特定遭遇,以查看它属于哪个表。
我是一名在IT部门工作的护士。所以我有基本的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 :(得分: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;
答案 1 :(得分: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