T-SQL和SSRS分组和计数

时间:2011-02-10 19:32:52

标签: tsql

我必须从2个表中获取数据并以数据透视表的形式输出数据。数据有3种类型的人头数,实际数,计划数和待定数,人数以月数为单位。现在我能够获得部分解决方案。以下是我获取实际人数数据的代码。

SELECT

' Actual' HC_TYPE, p.[Owner], h1.ProjectID, p.ProjectName, h1.Center,
substring(convert(varchar,h1.Period,120),1,7) Period,
(Case when (substring(h1.ID,1,3) <> 'TBD') then count(*) else '0' end) HC

FROM HC_PLAN_EXPANDED h1, PROJECTS p 

WHERE p.Status = 'Active' 

AND h1.ProjectID = p.ProjectID          

GROUP BY  p.Owner, h1.ProjectID, h1.Center, p.ProjectName,
substring(convert(varchar,h1.Period,120),1,7), h1.ID

我不需要使用h1.ID分组,但能够在案例条件中使用h1.ID。

3 个答案:

答案 0 :(得分:0)

也许这对你有用:

SELECT

' Actual' HC_TYPE, p.[Owner], h1.ProjectID, p.ProjectName, h1.Center,
substring(convert(varchar,h1.Period,120),1,7) Period,
(Select Case when (substring(h1.ID,1,3) <> 'TBD') then count(*) else '0' end from h1) HC

FROM HC_PLAN_EXPANDED h1, PROJECTS p 

WHERE p.Status = 'Active' 

AND h1.ProjectID = p.ProjectID          

GROUP BY  p.Owner, h1.ProjectID, h1.Center, p.ProjectName,
substring(convert(varchar,h1.Period,120),1,7), h1.ID

答案 1 :(得分:0)

即使你说你已经找到了解决方案,你仍然可能想看看这个。以防万一。 :)

SELECT

' Actual' HC_TYPE, p.[Owner], h1.ProjectID, p.ProjectName, h1.Center,
substring(convert(varchar,h1.Period,120),1,7) Period,

count(Case substring(h1.ID,1,3) when 'TBD' then null else 1 end) HC  /* <-- */
/* alternatively, and closer to your structuring too:
count(Case when substring(h1.ID,1,3) <> 'TBD' then 1 end) HC
*/

FROM HC_PLAN_EXPANDED h1, PROJECTS p 

WHERE p.Status = 'Active' 

AND h1.ProjectID = p.ProjectID          

GROUP BY  p.Owner, h1.ProjectID, h1.Center, p.ProjectName,
substring(convert(varchar,h1.Period,120),1,7)

答案 2 :(得分:0)

这就是我所做的..

选择a.ProjectID,中心,ID,         期间,[来源],p.ProjectName,p.Owner,COUNT(1)AS HC,          案件          当子串(ID,1,3)&lt;&gt; 'TBD'那么算(1)          ELSE 0          结束为HC_TYPEA,

     CASE 
     WHEN substring(ID,1,3) = 'TBD'  THEN COUNT(1)
     ELSE 0
     END AS HC_TYPEp

FROM HC_PLAN_EXPANDED一个加入项目p ON a.ProjectID = p.ProjectID 在哪里p.Status IN('ACTIVE') 和“2011-01-01”和“2011-12-01”之间的时间段

GROUP BY a.ProjectID,Center,ID,Period,[Source],p.ProjectID,p.ProjectName,p。[Owner]

我在报告构建器上对3种类型的人数进行了分组。我知道它与我实际要求的有很多不同......但它符合我的目的..谢谢大家的支持..