2013-06-18 47 views
-3

我有這兩個表:轉換兩個表到單個表

+-------------+--------+  +----+-------+ 
| employee_id | val_id |  | id | value | 
+-------------+--------+  +----+-------+ 
|   123 |  1 |  | 1 |  A | 
+-------------+--------+  +----+-------+ 
|   123 |  2 |  | 2 |  B | 
+-------------+--------+  +----+-------+ 
|   123 |  3 |  | 3 |  C | 
+-------------+--------+  +----+-------+ 

預期結果

+-------------+-------+-------+-------+ 
| employee_id | val_1 | val_2 | val_3 | ... 
+-------------+-------+-------+-------+ 
|   123 |  A |  B |  C | 

你能幫我請

+1

你應該檢查'Join'和'Pivot'。 –

+3

檢出PIVOT命令http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx –

+0

你想合併物理的兩個表,或者你想查詢的結果如預期? – xQbert

回答

0
  1. 創建的第一個表值列
  2. 通過更新子句更新'值'列(您可以使用子選擇來選擇值)
  3. DROP val_id列
  4. DROP第二個表

有多大表?

0

使用加入,並轉動。這將給出所需的結果

SELECT * FROM(
SELECT employeeID,'val_'+CAST(a.val_id AS VARCHAR(2)) val_id ,value 
FROM table1 a INNER JOIN table2 b ON a.val_id=b.val_id 
) AS ss 
PIVOT 
(
    MAX(value) 
    FOR [val_id] IN ([val_1],[val_2],[val_3]) 
)AS pivott