У меня есть проблема, что если я запускаю этот запрос:SQL Server создает ненужные строки
select
l.SiteID,
coalesce(sum(case when a.[TypeKey] = 1 then a.Calc else 0 end)/
nullif(case when TypeKey = 1 then count(l.LocationType) else 0 end, 0), 0) as 'My Type 1 avg',
coalesce(sum(case when a.[TypeKey] = 2 then a.Calc else 0 end)/
nullif(case when TypeKey = 2 then count(l.LocationType) else 0 end, 0), 0) as 'My Type 2 avg'
from
@NumberOfPeople a
inner join
Dim.Locations l on a.LocationType = l.LocationType
group by
SiteID, TypeKey
Всякий раз, когда он находит второй тип записи, он создает новую строку вместо того, чтобы поместить число в обеих Созданные мной средние столбцы Type.
Что его возвращение заключается в следующем:
|SiteID|My Type 1 avg|My Type 2 avg|
|1 |1.0 |0 |
|2 |1.5 |0 |
|3 |2.5 |0 |
|1 |0.0 | 1.5|
В результате я хочу видеть из этого запроса:
|SiteID|My Type 1 avg|My Type 2 avg|
|1 |1.0 | 1.5|
|2 |1.5 |0 |
|3 |2.5 |0 |
Я думаю, что проблема в группе By TypeKey является то, что вызывает такое поведение? И все же я не могу просто удалить его из-за правил - как тогда жалуется, что его не часть этой группы по:
TypeKey is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Любые предложения?
Колонка «grouptable.My Тип 1 ср» недопустим в списке выбора, поскольку он не содержится ни в статистической функции или предложения GROUP BY. –
@AlinaVinnichek, пожалуйста, попробуйте обновленный запрос – ughai
Ah awesome, cheers, который работает сейчас !!! –