2014-01-07 4 views
-1

Пожалуйста, помогите мне подсчитать количество строк, возвращенных моим запросом, в которых указывается число сотрудников, работающих в течение определенного месяца.Count DISTINCT Сотрудники

У меня есть общее количество часов, режим & Имя сотрудника, но как я могу вернуть точное число сотрудников, работающих в течение месяца?

Count(DISTINCT LD.Employee) Показывает, что каждый сотрудник встречается один раз, но как добавить 1, чтобы получить 52 в качестве моего окончательного ответа?

SELECT LD.Period, LD.EmOrg, LD.EmType, LD.Employee, 
    Sum(LD.RegHrs) AS 'Total Hours', Count(LD.RegHrs) AS 'Mode', 
    Count(DISTINCT LD.Employee) AS 'Counted Employees' 
FROM SSI.dbo.LD LD 
GROUP BY LD.Employee, LD.Period, LD.EmOrg, LD.EmType 
HAVING (LD.EmOrg Like '%T00') AND (LD.EmType='S') 

данных:

Period EmOrg EmType Total Hours Mode Employee Counted Employees 
201306 RSA/PZB/T00 S 180 66 GOVINP1 1 
201306 RSA/PZB/T00 S 200 35 LANDCJ1 1 
201306 RSA/PZB/T00 S 180 34 WOODRE 1 
201306 RSA/JNB/T00 S 160 33 MOKOHM1 1 
201306 RSA/PLZ/T00 S 160 32 KAPPPJ 1 
201306 RSA/PZB/T00 S 187 31 CAHISJ 1 
201306 RSA/PZB/T00 S 180 31 ZEMUN 1 
201306 RSA/PZB/T00 S 190 28 SAULDD1 1 
201306 RSA/DUR/T00 S 188 26 JEROP1 1 
201306 RSA/PZB/T00 S 204 24 NGOBS1 1 
201306 RSA/PZB/T00 S 201 23 DLAMMP 1 
201306 RSA/PZB/T00 S 192 23 ZONDNS2 1 
201306 RSA/PLZ/T00 S 160 22 MPHURK 1 
201306 RSA/PZB/T00 S 186 21 DUBESE1 1 
201306 RSA/PZB/T00 S 187 21 MABAMS 1 
201306 RSA/PZB/T00 S 189 21 MBELBV 1 
201306 RSA/PZB/T00 S 188 21 MNDAMB 1 
201306 RSA/PZB/T00 S 186 21 ZONDIPB1 1 
201306 RSA/JNB/T00 S 180 20 BOKAML 1 
201306 RSA/PTA/T00 S 180 20 DAVEJA 1 
201306 RSA/PZB/T00 S 180 20 DLAMVK 1 
201306 RSA/JNB/T00 S 163.5 20 ERLAME 1 
201306 RSA/PZB/T00 S 180 20 HLONLA 1 
201306 RSA/CPT/T00 S 179 20 HOUGHJ 1 
201306 RSA/PZB/T00 S 180 20 KAFFS 1 
201306 RSA/PTA/T00 S 180 20 KEYTDJ 1 
201306 RSA/JNB/T00 S 180 20 KHATEK 1 
201306 RSA/DUR/T00 S 180 20 KHUZB1 1 
201306 RSA/PTA/T00 S 180 20 LEHLTJ 1 
201306 RSA/JNB/T00 S 180 20 LETSMM2 1 
201306 RSA/PTA/T00 S 170 20 MAKGMJ 1 
201306 RSA/BDV/T00 S 160 20 MALEVT1 1 
201306 RSA/JNB/T00 S 180 20 MAPHV1 1 
201306 RSA/JNB/T00 S 180 20 MNGOTX 1 
201306 RSA/PZB/T00 S 180 20 MTHETN1 1 
201306 RSA/BDV/T00 S 180 20 MULAG1 1 
201306 RSA/DUR/T00 S 180 20 NDLOCT1 1 
201306 RSA/PZB/T00 S 180 20 NDLOS 1 
201306 RSA/BFN/T00 S 180 20 NELL  1 
201306 RSA/PLZ/T00 S 180 20 OOSTLC 1 
201306 RSA/CPT/T00 S 180 20 PAULDMR 1 
201306 RSA/PZB/T00 S 180 20 PHIRSN1 1 
201306 RSA/PZB/T00 S 180 20 RAMBD1 1 
201306 RSA/PZB/T00 S 180 20 SANLLJ 1 
201306 RSA/PZB/T00 S 180 20 SMITEP3 1 
201306 RSA/CPT/T00 S 180 20 SOCEGR 1 
201306 RSA/PZB/T00 S 180 20 SOKOV 1 
201306 RSA/CPT/T00 S 180 20 TSHIJC 1 
+1

Пожалуйста, отредактируйте и разместите свой пост, чтобы быть немного более «удобоваримым». – cubitouch

+0

'SELECT COUNT (LD.Employee)' должно дать вам общее количество записей в таблице, 'SELECT COUNT (DISTINCT LD.Employee)' даст вам количество сотрудников DISTINCT, которые многие люди, независимо от того, сколько сдвигов они работал. Если вы не хотите, чтобы любой из этих номеров мог уточнить ваш вопрос. Кажется, в вашем наборе данных 48 записей, откуда берутся 52? –

ответ

0

Если вы хотите, общее количество сотрудников, вы должны удалить пункт GROUP BY LD.Employee.

Именно поэтому ваш COUNT(LD.Employee) всегда один. Попробуйте удалить GROUP

+0

_Willsaw Media_ Я знаю, что я использую ** LD.Employee ** в качестве функции агрегата и не должен быть включен в групповую функцию, но когда я удаляю его ** ODBC SQL Server ** дает я ошибка ** Столбец «SSI.dbo.LDEmployee» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY **. Удаления GROUP BY изменил результат моего выхода значительно Позвольте мне показать вам свою текущую таблицу теперь ... – SProgrammer

+0

К сожалению Im новый еще не слишком хорошо, используя этот форум Периода EmOrg EmType Общего режима Часов счетного Сотрудники 201306 RSA/PZB/T00 S 4450 600 24 201306 RSA/JNB/T00 S 1223,5 153 7 201306 RSA/CPT/T00 S 719 80 4 201306 RSA/PTA/T00 S 710 80 4 201306 RSA/PLZ/T00 S 500 74 3 201306 RSA/DUR/T00 S 548 66 3 201306> RSA/BDV/T00 S 340 40 2 201306 RSA/BFN/T00 S 180 20 1 – SProgrammer

+0

Вы можете написать желаемые результаты по вашему запросу? Вам просто нужна одна линия? –