2011-02-10 75 views
0

我必須從2個表中獲取數據並以Pivot的形式輸出數據。數據有3種類型的人數,Actual,Plan和Pending,人數與月份一致。現在我可以得到一個部分解決方案。以下是我的代碼來獲取實際人數的數據。T-SQL和SSRS分組和計數

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組,但能夠在case情況下使用h1.ID。

+1

添加「緊急」到你的問題描述更可能會惹惱社區在這裏,讓他們忽略你的問題。你的問題不比其他任何人更迫切。 – Gerrat 2011-02-10 19:37:47

+0

'urgent'removed ... – MartW 2011-02-10 19:39:39

+0

對此我感到抱歉..但是我的情況要求..乾杯 – Avinash 2011-02-10 19:41:34

回答

0

這是我做過什麼..

SELECT a.ProjectID,中心,ID, 期間,[來源] p.ProjectName,p.Owner,COUNT(1)HC , CASE WHEN 子串(ID,1,3)<> 'TBD' THEN計數(1) ELSE 0 END AS HC_TYPEA,

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

FROM HC_PLAN_EXPANDED一個JOIN項目p ON a.ProjectID = p.ProjectID WHERE p.Status IN( 'ACTIVE') '2011-01-01' 之間 和週期和 '2011-12-01'

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

我在報告生成器上對3種類型的人員進行分組..我知道它與我實際詢問的有很大不同..但它服務我的目的..謝謝大家的支持..

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 
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)