我有以下两个临时表,#dates和#availability,以及一个datetime varaible,@startdate。如何查找按多列分组时的平均值?
该变量是:
declare @startdate datetime = '2016-12-20'
柱和#dates的数据是:
Date
-------
2016-12-20
2016-12-21
2016-12-22
列和#availability的数据是:
GroupId Date StatusId Price
-----------------------------------------------
111 2016-12-20 1 200
111 2016-12-21 1 100
111 2016-12-22 1 500
111 2016-12-22 1 300
222 2016-12-20 4 100
222 2016-12-21 1 200
222 2016-12-22 1 200
333 2016-12-20 1 100
333 2016-12-22 4 200
表#dates显示顾客将留在旅馆房间的日期范围,并且这些日期必须(应该)是连续的
表##可用性是我从其他表获得的可用性数据。
我的目标是显示平均价格为每个有效组。
的限制有:
对于开始日期,则StatusId必须是1;否则,StatusId可以是1或4(但不能是其他数字,如2和3) 这意味着GroupId 2已从我们的结果中删除。
如果该组没有完整的日期范围价格信息,我们将删除它。 GroupId 3没有2016-12-21的价格信息,它将被删除。
如果有任何一天有多个价格,我们选择当天的最低价格。 这意味着第1组将使用以下数据来计算平均价格:
二〇一六年十二月二十零日 - > $ 200
2016年12月21日 - > $ 100
2016年12月22日 - > $ 300
然后,显示最终平均价格:$(200 + 100 + 300)/ 3天= $ 200
我开始与此,
Select GroupId,Date
From #availability
Group by GroupId, Date
但无法确定如何确定日期编号是否与#dates表匹配,并且每个组的#availability中的startdate状态必须为1。
“@ startdate”变量有什么用? –
如果你愿意,你可以把它作为“Where”的标准。这就像补充数据一样。 – user3174976