我有一个存储我们公司的职位和“要求”的数据库。即每个职位都需要经历一次建筑感应等等。有一个程序允许用户看到/管理所有这些,但是当然,有人想要为客户端导出,而且当前的设置并不可行,我在想一个快速的数据透视表将会完成这项工作。数据透视表中的数据类型转换错误
我有以下表格;
--------------------------- | Positions | --------------------------- | PositionID | int | | PositionName | nvarchar | --------------------------- ------------------------------ | Requirements | ------------------------------ | RequirementID | int | | RequirementName | nvarchar | | RequirementType | bit | ------------------------------ ------------------------- | Position Requirements | ------------------------- | Position_ID | int | | Requirement_ID | int | -------------------------
我想这样做是拉出数据特定位置或位置,即SELECT * FROM Positions WHERE PositionName LIKE '%Manager%';
这些位置将形成透视的最左边的列。
对于数据透视表的第一行,我想每个RequirementName。
内部数据将为RequirementType字段(即“0”或“1”,可能是“任何”/“全部”)。
我已经阅读和阅读,但我永远不能看到我的头脑围绕他们的概念,所以这是我目前的尝试;
SELECT *
FROM Requirements
PIVOT (MAX(RequirementType) FOR RequirementName IN ([Requirement], [Names], [Go], [Here])) AS pivtable
WHERE [Requirement], [Names], [Go], [Here] IN (
SELECT RequirementName FROM Requirements WHERE RequirementID IN (
SELECT Requirement_ID FROM PositionRequirements WHERE Position_ID IN (
SELECT PositionID FROM Positions WHERE PositionName LIKE '%Manager%')));
不应该这个是'WHERE [要求],[名],[围棋],[这里] in..'只是'WHERE [要求] in..' – 2015-02-24 08:13:35