2014-10-09 2 views
0

У меня возникли проблемы с CASE Заявления в T-SQLGROUP BY показывает ту же самую группу несколько раз при использовании СЛУЧАЯ

Вот запрос:

Select 
CASE WHEN cri.ChartRetrievalMethodID IS NULL THEN wfseg.SiteEventGroupID 
ELSE cri.ChartRetrievalMethodID END as Type, 
count(distinct c.chartid) TotalCharts 
From Sites s LEFT JOIN Charts c ON s.SiteID=c.SiteID 
LEFT JOIN ChartRetrievalInformation cri ON c.ChartID=cri.ChartID 
LEFT JOIN WFSiteEvents wfse ON wfse.SiteID=s.siteid 
LEFT JOIN WFSiteEventTypes wfset ON wfset.EventTypeID=wfse.EventTypeID 
LEFT JOIN WFSiteEventGroups wfseg ON wfset.SiteEventGroupID=wfseg.SiteEventGroupID 
Where 
wfse.EventStatusID in (1,2) 
and s.ProjectID=110 
group by 
cri.ChartRetrievalMethodID, wfseg.SiteEventGroupID 

Я получаю многие из нескольких строк, а не их сочетающих в одном - например:

+------+--------------+ 
| Type | Total Charts | 
+------+--------------+ 
| 3 | 28   | 
| 3 | 3   | 
+------+--------------+ 

в идеале я хотел бы эти два ряда помятых вместе, чтобы быть только один:

+------+--------------+ 
| Type | Total Charts | 
+------+--------------+ 
| 3 | 31   | 
+------+--------------+ 

Я уверен, что я ничего не пишу неправильно, но я не могу понять, что это такое.

+2

Вы можете группировать по всей оператору case. – Laurence

ответ

1

Если вы включили в список столбцов поля cri.ChartRetrievalMethodID, wfseg.SiteEventGroupID в списке столбцов, вам станет ясно, почему они показаны в нескольких строках с этой группировкой.

Что вы хотите сделать, это группа по значению, которое вы звоните Type. В другой СУБД это будет так же просто, как GROUP BY Type, но in SQL Server you must repeat the full expression in the GROUP BY clause.

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