Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql T-SQL和SSRS分组和计数_Tsql - Fatal编程技术网

Tsql T-SQL和SSRS分组和计数

Tsql T-SQL和SSRS分组和计数,tsql,Tsql,我必须从两个表中获取数据,并以数据透视的形式输出数据。该数据有三种类型的人数,即实际人数、计划人数和待定人数,并且人数以月份为轴心。现在我可以得到一个部分解。下面是我获取实际员工人数数据的代码 SELECT ' Actual' HC_TYPE, p.[Owner], h1.ProjectID, p.ProjectName, h1.Center, substring(convert(varchar,h1.Period,120),1,7) Period, (Case when (substring

我必须从两个表中获取数据,并以数据透视的形式输出数据。该数据有三种类型的人数,即实际人数、计划人数和待定人数,并且人数以月份为轴心。现在我可以得到一个部分解。下面是我获取实际员工人数数据的代码

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

我不需要使用group by h1.ID,但可以在案例条件下使用h1.ID。

也许这对您有用:

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

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

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)
我就是这么做的

选择a.ProjectID、中心、ID、, 期间,[来源],项目名称,所有者,以HC计, 案例 当substringID为1,3“待定”时,则count1 其他0 以HC_TYPEA结尾

     CASE 
     WHEN substring(ID,1,3) = 'TBD'  THEN COUNT(1)
     ELSE 0
     END AS HC_TYPEp
从HC_计划_扩展了加入项目p 关于a.projectd=p.projectd 其中p.状态为“活动” 以及“2011-01-01”和“2011-12-01”之间的期间

按a.ProjectID、中心、ID、期间、[Source]、p.ProjectID、p.ProjectName、p.[Owner]分组


我在reports builder上对3种类型的员工进行了分组。。我知道这和我实际问的有很大不同。。但它达到了我的目的。。谢谢大家的支持

在描述您的问题时添加“紧急”更可能会惹恼社区,让他们忽略您的问题。你的问题并不比任何人的问题都紧急,对此我很抱歉。。但我的处境要求。。我认为一个恰当的“紧急”请求实际上可以产生预期的效果。但是当它直接出现在标题中时,情况就不一样了。我试过了,但结果是一样的。当我按ID分组时,我无法获得具有相同ID的记录计数。。相反,它会分割记录,并将每个记录的计数显示为1。。我希望我说的有道理。我真傻,我保留了原始查询中的相同分组:您是否尝试过此查询而不按h1.ID分组?是的。。是的。。不起作用。。顺便说一句,我采取了不同的方法。。我找到了解决办法。。非常感谢你的帮助:很好,祝贺你。你能把答案贴出来吗?也许其他用户也会遇到同样的问题。同样,这个问题也可以标记为已回答。再次祝贺:这看起来很有希望。。我试试看。。非常感谢你!!: