주어진 달에 호텔에 숙박하는 일수를 버텍스 뷰하는 인덱싱 된 뷰가 있다고 가정 해 봅니다. 보고서를 만들 때 모든 결과의 평균 일 수를 나타내는 결과 집합에 행을 삽입하려고합니다.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
편집 질문을하고 원하는 결과를 제공합니다. –
어떤 DBMS를 사용하고 있습니까? –
SSMS를 사용하고 있습니다. 2016 – adam