2017-01-17 30 views
0

我有多個(8)表,它們都有一個名爲Encounter_ID的列。同一Encounter_ID可以出現在一個或多個表中。最終目標是查看具體Encounter_ID出現在哪些表中。SQL標誌/ IF語句/鏈接公共列值的新列

我想創建名爲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

這樣的?

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

消息8155,級別16,狀態2,行18 沒有列名是爲在 't' 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