带有查找表的Sql Server Pivot

时间:2011-09-01 16:00:19

标签: sql sql-server sql-server-2008 pivot

我查看了大多数数据透视表示例,但我还没有找到完全相同的情况(另外,我可能已经超出了我的联盟)。

我有一个Employees表,一个Attributes表,以及一个匹配员工和属性的查找表:

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

我正在尝试以结果集结束,其中属性显示为列,其中布尔值指示属性是否存在于给定员工,例如:

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我现在有点不合时宜,但无法给你一些指示。:

  1. 组装基本(非透视)查询。您应该在表之间使用几个LEFT JOIN。完成后,继续进行透视。
  2. 看看我在Dynamic PIVOT上写的东西: