2015-06-22 36 views
1

我正在嘗試執行以下任務。我有兩個表格,包含以下數據?是SQL服務器中可用的查找函數

表1:

objectid name   LOCATION Project Manager 

4584  Client    NULL  Indicator 

4591  Ericsson   NULL  Indicator 

4604  NEW201    Text  NULL 

表2:

projectobjectid  name  value 

4584    Indicator Red 

4591    Indicator Green 

4604    Text   Sf001-bb1-5 

4604    Text   Sf001-bb1-4 

4604    Text   Sf001-bb1-3 

4604    Text   Sf001-bb1-2 

結果如下:從表

objectid name      LOCATION  Project Manager 

4584  Client      NULL    Red 

4591  Ericsson     NULL    Green 

4604   NEW201     Sf001-bb1-5   NULL 

4604   NEW201     Sf001-bb1-4   NULL 

4604   NEW201     Sf001-bb1-3   NULL 

4604   NEW201     Sf001-bb1-2   NULL 

更新表1 2

+0

嘗試'LEFT JOIN' – Lamak

回答

2

您可以有兩個這樣做left join s,每列一個要替換:

SELECT t1.objectid, t1.name, l1.value, l2.value 
FROM  table1 t1 
LEFT JOIN table2 l1 ON t1.objectid = l1.projectobjectid AND 
         t1.location = l1.name 
LEFT JOIN table2 l2 ON t1.objectid = l2.projectobjectid AND 
         t1.projectmanager = l2.name 

SQL Fiddle Demo

+0

增加了sql小提琴演示(我希望你不介意!),這也起作用! +1! –

+0

@FabianBigler一點也不 - 謝謝! – Mureinik

1

你去那裏(只有一個左連接):

SELECT t1.objectid, t1.name, 
CASE t1.location WHEN t2.name THEN t2.value END as Location, 
CASE t1.projectmanager WHEN t2.name THEN t2.value END as ProjectManager 
FROM table1 t1 
LEFT JOIN table2 t2 ON t2.projectobjectid=t1.objectid 

SQL Fiddle Demo