我有以下三个查询可以得到三个特定时间段内产品的平均价格:所有数据,最近7天和最近30天。三个时期的计算平均值
SELECT AVG(Price) AS AggregatedPrice, COUNT(*) AS PCount
FROM dbo.Products
WHERE Id = @id
SELECT AVG(Price) AS AggregatedPrice, COUNT(*) AS PCount
FROM dbo.Products
WHERE Id = @id AND DATEDIFF(day, UpdatedDatetime, getdate()) < 7
SELECT AVG(Price) AS AggregatedPrice, COUNT(*) AS PCount
FROM dbo.Products
WHERE Id = @id AND DATEDIFF(day, UpdatedDatetime, getdate()) < 30
这三个查询给我正确的数据,但不是我想要的形式。有没有办法将这三个查询合并为一个。我的最终目标是创建一个包含所有这些数据的视图。
此外,在我看来,7天计算的平均值可以重复使用30天和所有列表。有我可以做的优化吗?
太棒了!我看了这个执行计划,它比3次选择要快。 – Martin 2011-03-25 16:52:13