我在SQL Server 2008 R2中有两个表:表“阶段:
Phases_ID Phases_Title
------------------------
1 Phase1
2 Phase2
... ...
和表“里程碑”
Milestones_ID Milestones_PhaseID Milestones_Category
------------------------------------------------------
1 1 Project
2 1 Project
3 1 Customer
... ... ...
您可以看到这是表之间的1:n关系。
现在我需要一个查询,其结果是这样的:
Phases_ID Project Customer (Columns 'Project' and 'Customer' counts milestones)
---------------------------------
1 2 1
2 0 3
... ... ...
是否可以动态创建具有里程碑类别的列?否则,我将对表进行简单的左连接,并在后面的代码中进行其余操作,但是性能将是最差的。
谢谢!
是的!PIVOT
进行救援:http : //technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx
尝试这样的事情:
SELECT Phases_ID, Project, Customer
FROM (
SELECT Phases_ID, Milestones_PhaseID, Milestones_Category
FROM Phases INNER JOIN Milestones ON Phases_ID = Milestones_PhaseID
) AS src
PIVOT (
COUNT(*)
FOR Milestones_Category IN ([Project], [Customer])
) AS pvt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句