SQL标志/ IF语句/链接公共列值的新列

时间:2017-01-17 16:54:40

标签: sql-server if-statement sql-server-2014 multiple-tables

我有多个(8)表都有一个名为Encounter_ID的列。相同的Encounter_ID可以出现在一个或多个表中。最终目标是查看特定Encounter_ID出现在哪些表格中。

我想创建名为Table1_FlagTable2_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

2 个答案:

答案 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;

http://rextester.com/LGQZ72769

答案 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