У меня есть запрос, который заполняет отчет о «списании» часов, общая сумма которого представляет собой сумму RegHrs, OvtHrs и SpecialOvtHrs, но только те значения с положительным значением (каждый из эти поля могут иметь положительные и отрицательные значения - положительные значения «списываются»).Проблема с суммами и с условием наличия
Запрос Я использую (который не работает) является:
select
LD.Employee,
max(EM.LastName + ', ' + Em.FirstName) as EMName,
LD.WBS1, LD.WBS2,
sum(LD.RegHrs + LD.OvtHrs + LD.SpecialOvtHrs) as [Hours],
CL.Name as ClientName, pctf.CustProgram,
max(PR.Name) as ProjName,
LD.PKey, ISNULL(BillingDirectives.Comment, 'None')
from AnvilProd..LD
left join AnvilProd..PR on LD.WBS1 = PR.WBS1 and PR.WBS2 = ' ' and PR.WBS3 = ' '
left join AnvilProd..EM on LD.Employee = EM.Employee
left join AnvilProd..CL on PR.ClientID = CL.ClientID
left join AnvilProd..ProjectCustomTabFields pctf on PR.WBS1 = pctf.WBS1 and pctf.WBS2 = ' ' and pctf.WBS3 = ' '
left join InterfaceDev..BillingDirectives on BillingDirectives.PKey = LD.PKey
where LD.BillStatus = 'X'
and LD.WrittenOffPeriod = @custPeriod
and LD.WBS1 not in (select distinct WBS1 from AnvilProd..BT where FeeBasis = 'L')
and LD.WBS1 not in (select distinct WBS1 from InterfaceDev..CircledHoursReportEliminatedJobs where ActiveStatus = 'Active')
group by pctf.CustProgram, CL.Name, LD.WBS1, LD.WBS2, LD.Employee, BillingDirectives.Comment, LD.PKey
-- having ((sum(LD.RegHrs) > 0) or (sum(LD.OvtHrs) > 0) or (sum(LD.SpecialOvtHrs) > 0))
order by pctf.CustProgram, CL.Name, LD.WBS1, WBS2, EMName
Мне нужно найти списанные часов для каждого сотрудника, WBS1, WBS2 комбинации.
Я пробовал десяток различных вещей с этим предложением having
и не могу получить его, чтобы дать мне точный результат.
О, мой ... это красивый подход, который даже не произошел со мной. Вот почему я люблю StackOverflow! Спасибо, богемский. – DJGray
Редактирование решения выше. Я должен сказать, когда RegHrs <> 0, а не> 0, потому что я должен также включать отрицательные значения. – DJGray
@ DJGray только для RegHrs? Остальные только положительные? У вашей попытки предложения есть 'sum (LD.RegHrs)> 0', предполагая, что только положительный фильтр применяется ко всем 3 – Bohemian