Ваша проблема в том, что [SERVICE AA 01]
и ['SERVICE AA 01']
не ссылаются на одинаковые имена столбцов.Второй имеет одинарные кавычки в имени столбца - очень плохая практика, и это не оспаривается.
Я сделаю редакционный комментарий, что если вы назвали столбцы подчеркиванием, а не пробелами (SERVICE_AA_01
),тогда вам не нужно будет бежать от них.И вы, вероятно, не цитировали бы их тоже.И у тебя не было бы этой проблемы.Просто говорю.Хорошие соглашения об именах могут предотвратить проблемы и путаницу.
Я бы также использовал условное агрегирование:
select street,
sum(case when Service = 'SERVICE AA 01' then total end) as [SERVICE AA 01],
sum(case when Service = 'SERVICE AB 01' then total end) as [SERVICE AB 01],
sum(case when Service = 'SERVICE AC 01' then total end) as [SERVICE AC 01] from services
group by street;
Я не считаю синтаксис pivot
особенно мощным или лаконичным.Как указывает Tab, подзапрос обычно используется, потому что посторонние столбцы делают нечестивые вещи в pivot
.Это не проблема в этом случае, но это часто происходит.