たとえば、指定した月にホテルに滞在する日数をバケット化した索引ビューがあるとします。レポートを作成するときに、結果セットにすべての月の平均日数を示す行を挿入したいとします。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が集約またはグループ化されていないため、選択リストが無効であるというエラーを取得しています:
私の現在のクエリは次のようになります。しかし、私は月に分割されていない、1つの行にすべてが必要です。どんな助けでも大歓迎です。私が探している
結果は次のとおりです。
month1 | month2 | month3 | quarter1
2.5 | 9 | 7.6 | 5.357
編集をあなたの質問、あなたが望む結果を提供します。 –
どのDBMSを使用していますか? –
私はSSMSを使用しています2016 – adam