Группировка и подсчет T-SQL и SSRS - PullRequest
0 голосов
/ 10 февраля 2011

Я должен взять данные из 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 голосов
/ 11 февраля 2011

Даже если вы говорите, что уже нашли свое решение, вы все равно можете посмотреть на это.Так, на всякий случай.:)

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)
0 голосов
/ 11 февраля 2011

Это то, что я сделал ..

ВЫБРАТЬ a.ProjectID, Центр, ID, Период, [Источник], p.ProjectName, p.Owner, COUNT (1) AS HC, ДЕЛО КОГДА подстрока (ID, 1,3) <> 'TBD' THEN count (1) ELSE 0 END AS HC_TYPEA,

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

ИЗ HC_PLAN_EXPANDED СОЕДИНЕННЫЕ ПРОЕКТЫ p ON a.ProjectID = p.ProjectID ГДЕ p.Status IN («АКТИВНЫЙ») и период между «2011-01-01» и «2011-12-01»

GROUP BY a.ProjectID, Центр, ID, Период, [Источник], p.ProjectID, p.ProjectName, стр. [Владелец]

Я сгруппировал 3 типа численности персонала в построителе отчетов ... Я знаю, что он сильно отличается от того, что я на самом деле просил ... но это служило моей цели .. спасибо всем за вашу поддержку ..

0 голосов
/ 10 февраля 2011

Возможно, это будет работать для вас:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...