2013-09-11 2 views
0
SELECT 
month(CA.PromiseDate) as [Miesiąc] 
,year(CA.PromiseDate) as [Rok] 
,x.[Deklaracje] as [Deklaracje] 
,x.[Bpotw] as [Bpotw] 
,x.[Potw] as [Potw] 
,C.ClientId 
,C.SetId 
,K.NameShort 
,U.FirstName 
,U.LastName 
from (
SELECT 
CaseDetailId 
,sum(case when CaseActionHistory.CaseActionDefinitionId = 34 then PromiseValue else 0 end) AS [Deklaracje] 
,sum(case when CaseActionHistory.CaseActionDefinitionId = 35 then PromiseValue else 0 end) AS [Bpotw] 
,sum(case when CaseActionHistory.CaseActionDefinitionId = 36 then PromiseValue else 0 end) AS [Potw] 
from 
CaseActionHistory 
group by 
CaseDetailId 
) as x 
join CaseActionHistory as CA on CA.CaseDetailId = x.CaseDetailId 
join CaseDetails as C on CA.CaseDetailId = C.CaseDetailsId 
join Client as K on C.ClientId = K.ClientId 
join ClientProducts as CP on C.ProductId = CP.ClientProductId 
join Users as U on CA.UserId = U.UserId 
join CaseDetailsView as CDV on C.CaseId = CDV.CaseId 
WHERE 
(CA.IsDeleted IS NULL or CA.IsDeleted <> 'True') 
and 
(C.ClientId = @ClientId or @ClientId IS NULL) 
and 
(CA.CaseActionDefinitionId in (34,35,36,99)) 
and 
(C.CaseStatusId not in (6,2)) 
and 
(CA.PromiseDate >= CDV.EndServiceDate) 
and 
(U.UserId = @User or @User IS NULL) 
and 
(CA.PromiseDate >= @Min or @Min IS NULL) 
and 
(CA.PromiseDate <= @Max or @Max IS NULL) 
and 
CA.PromiseValue > 0 

group by C.ClientId, C.SetId, K.NameShort, year(PromiseDate), month(PromiseDate) ,U.FirstName, U.LastName, x.Deklaracje, x.Bpotw, x.Potw 

Работы отлично, кроме группировки. Он объединяет весь PromiseDate не только по годам и месяцам, как и следовало ожидать. Он показывает результаты, как это:Группа по дате выпуска

http://oi44.tinypic.com/141719i.jpg

Однако он должен показать все те, как 1 запись.

ответ

0

ред благодаря комментарии ниже:

Попробуйте это (не тестировал)

SELECT 
month(CA.PromiseDate) as [Miesiąc] 
,year(CA.PromiseDate) as [Rok] 
,sum(case when CA.CaseActionDefinitionId = 34 then PromiseValue else 0 end) AS [Deklaracje] 
,sum(case when CA.CaseActionDefinitionId = 35 then PromiseValue else 0 end) AS [Bpotw] 
,sum(case when CA.CaseActionDefinitionId = 36 then PromiseValue else 0 end) AS [Potw] 
,C.ClientId 
,C.SetId 
,K.NameShort 
,U.FirstName 
,U.LastName 
from 
CaseActionHistory as CA 
join CaseDetails as C on CA.CaseDetailId = C.CaseDetailsId 
join Client as K on C.ClientId = K.ClientId 
join ClientProducts as CP on C.ProductId = CP.ClientProductId 
join Users as U on CA.UserId = U.UserId 
join CaseDetailsView as CDV on C.CaseId = CDV.CaseId 
WHERE 
(CA.IsDeleted IS NULL or CA.IsDeleted <> 'True') 
and 
(C.ClientId = @ClientId or @ClientId IS NULL) 
and 
(CA.CaseActionDefinitionId in (34,35,36,99)) 
and 
(C.CaseStatusId not in (6,2)) 
and 
(CA.PromiseDate >= CDV.EndServiceDate) 
and 
(U.UserId = @User or @User IS NULL) 
and 
(CA.PromiseDate >= @Min or @Min IS NULL) 
and 
(CA.PromiseDate <= @Max or @Max IS NULL) 
and 
CA.PromiseValue > 0 
group by C.ClientId, C.SetId, K.NameShort, year(PromiseDate), month  (PromiseDate) ,U.FirstName,  U.LastName 
+0

Угу. Однако это невозможно не группировать по этому значению, иначе в противном случае будет отображаться ошибка «Deklaracje», которая не используется в агрегированной функции или группе по выражению. – glaeran

+0

Мой плохой - я не видел тебя, стол Х - У меня будет другой взгляд – bhs

+0

Это работало? – bhs

Смежные вопросы