Допустим, у меня есть индексный вид, что bucketing количества дней пребывания людей в гостинице в данном месяце. При создании отчета я хочу вставить строку в мой результирующий набор, который показывает среднее число дней для всех месяцев.SQL Среднего значением отсчета подмножества
Мой индексированный вид выглядит следующим образом:
NumMonth | NumPeople | NumDays
1 | 4 | 3
1 | 4 | 4
2 | 1 | 9
3 | 3 | 6
3 | 2 | 10
Как выбрать среднюю продолжительность пребывания в одной строке?
Мой текущий запрос выглядит следующим образом:
INSERT INTO @results(month1, month2, month3, quarter1)
SELECT
'month1' = ISNULL(CASE WHEN v.NumMonth = 1
THEN convert(decimal(10,3), sum(v.NumPeople * v.NumDays))/convert(decimal(10,3), sum(v.NumPeople))
ELSE null END, 0),
'month2' = ISNULL(CASE WHEN v.NumMonth = 2
THEN convert(decimal(10,3), sum(v.NumPeople * v.NumDays))/convert(decimal(10,3), sum(v.NumPeople))
ELSE null END, 0),
'month3' = ISNULL(CASE WHEN v.NumMonth = 3
THEN convert(decimal(10,3), sum(v.NumPeople * v.NumDays))/convert(decimal(10,3), sum(v.NumPeople))
ELSE null END, 0),
'quarter1' = ISNULL(CASE WHEN v.NumMonth = 1 OR v.NumMonth = 2 OR v.NumMonth = 3
THEN convert(decimal(10,3), sum(v.NumPeople * v.NumDays))/convert(decimal(10,3), sum(v.NumPeople))
ELSE null END, 0)
FROM MonthTotalsView v with(noexpand)
Я получаю сообщение об ошибке, что список выбора является недействительным, потому что мой NumMonth не агрегируются или сгруппированы. Но я хочу все это в одной строке, а не в месяц. Любая помощь будет принята с благодарностью.
Результаты Я ищу являются следующие:
month1 | month2 | month3 | quarter1
2.5 | 9 | 7.6 | 5.357
Изменить свой вопрос и предоставить результаты, которые вы хотите. –
Какая СУБД вы используете? –
Я использую SSMS 2016 – adam