Sql Column to Row连接表

时间:2013-04-03 10:46:09

标签: sql unpivot

我有两张桌子。

---------------------------------------------------
| AltID        | Alan 1| Alan 2 | Alan 3 | UserId |
---------------------------------------------------
| 1            | Opel  | null   | Engine | 5121   |
| 2            | Home  | Garden | null   | 5653   |
| 3            | null  | null   | null   | 2133   |
---------------------------------------------------

-------------------------------------
| UserId        | Kolon  | NewValue |
-------------------------------------
| 2133          | Alan 1 | null     | 
| 2133          | Alan 2 | null     |
| 2133          | Alan 3 | null     |
| 5121          | Alan 1 | Brand    | 
| 5121          | Alan 2 | Model    |
| 5121          | Alan 3 | Part     |
| 5653          | Alan 1 | Place    | 
| 5653          | Alan 2 | Point    |
| 5653          | Alan 3 | Take     |
-------------------------------------

我试图得到像这样的结果

-----------------------------------------------------
| UserId        | Kolon  | NewValue | AltID | Deger |
-----------------------------------------------------
| 2133          | Alan 1 | null     |   3   | null  |
| 2133          | Alan 2 | null     |   3   | null  |
| 2133          | Alan 3 | null     |   3   | null  |
| 5121          | Alan 1 | Brand    |   1   | Opel  |
| 5121          | Alan 2 | Model    |   1   | null  |
| 5121          | Alan 3 | Part     |   1   | Engine|
| 5653          | Alan 1 | Place    |   2   | Home  |
| 5653          | Alan 2 | Point    |   2   | Garden|
| 5653          | Alan 3 | Take     |   2   | null  |
-----------------------------------------------------

我只是尝试做无法转移,但无法将其他表加入到它旁边。请帮助我吗?

2 个答案:

答案 0 :(得分:1)

select a.UserId, a.Kolon, a.NewValue, b.AltID,
       case a.Kolon when 'Alan 1' then [Alan 1]
                    when 'Alan 2' then [Alan 2]
                    when 'Alan 3' then [Alan 3] end Deger
  from Tbl2 a
  join Tbl1 b on a.UserId = b.UserId;

答案 1 :(得分:1)

如果您使用的是SQL Server 2008,那么您可以使用带有Table1子句的CROSS APPLY 取消隐藏 VALUES,然后加入{{1} }:

Table2

请参阅SQL Fiddle with Demo