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分组?是的。。是的。。不起作用。。顺便说一句,我采取了不同的方法。。我找到了解决办法。。非常感谢你的帮助:很好,祝贺你。你能把答案贴出来吗?也许其他用户也会遇到同样的问题。同样,这个问题也可以标记为已回答。再次祝贺:这看起来很有希望。。我试试看。。非常感谢你!!: