2011-09-01 71 views
1

我已經查看了大部分數據透視表的例子,但是我還沒有發現完全相同的場景(再加上我可能不在我的聯盟中)。Sql Server使用查找表樞軸轉動

我有一個員工表,屬性表,相匹配的員工和屬性查找表:

 
dbo.Employees 
employee_ID INT 
employee_name NVARCHAR(50) 
 
employee_ID | employee_name 
1   | Joe Smith 
2   | Don Johnson  
 
dbo.Attributes 
attribute_ID INT 
attribute_description NVARCHAR(50) 
 
attribute_ID | attribute_description 
50   | Works Weekends 
55   | Wears Hats 
61   | Enjoys Baseball 
 
dbo.EmployeeAttributes 
employee_attribute_ID INT 
employee_ID_fk INT 
attribute_ID_fk INT 
 
employee_attribute_ID | employee_ID_fk | attribute_ID_fk 
20     | 1    | 50 
21     | 2    | 61 
22     | 2    | 55 

我想最終得到一個結果集,其中的屬性顯示爲列,用b表示表示屬性是否存在對於給定的員工,像oolean值:

 
employee_ID | employee_name | Works Weekends | Wears Hats | Enjoys Baseball 
1   | Joe Smith  | 1    | 0   | 1 
2   | Don Johnson | 0    | 1   | 0 

任何幫助將是非常讚賞。

+0

我有一個博客在這個問題上[這裏]( http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/how-to-unpivot-and-pivot)。讓我知道如果這有幫助。 – DForck42

回答

1

我有點出的時間,現在,卻忍不住給你一些指點:

  1. 組裝您的基本(非透視)查詢。你應該在你的表格之間使用幾個LEFT JOIN。一旦你有了,繼續進行旋轉。
  2. 看那東西,我已經寫了動態PIVOT:
+0

謝謝阿德里安 - 這讓我走上了正軌。任何想法如何添加一個case語句將零值更改爲0並將值更改爲1? – Ethan

+0

是的:'當YourValue爲空然後0其他1結束的情況' –

+0

對不起,我的意思是'在哪裏'添加case語句。如果我將它添加到select語句,它不捕獲空值。 – Ethan