There may be a better way but here is one set-based possibility:--load 30 day counts into a temp tableselect sale_date ,numberOfSales = (select count(*) from #sales where sale_date >= a.sale_date and sale_date < dateadd(day,30,a.sale_date)) ,SalesInDollars = (select sum(amount) from #sales where sale_date >= a.sale_date and sale_date < dateadd(day,30,a.sale_date)) ,avgSales = (select avg(amount) from #sales where sale_date >= a.sale_date and sale_date < dateadd(day,30,a.sale_date))into #StartPeriodsfrom #sales a--Get date for each Max from temp tableselect 'NumberOfSales' Metric, b.sale_date, b.NumberOfSalesfrom (select max(numberOfSales) numberOfSales from #startPeriods) ajoin #StartPeriods b on b.NumberOfSales = a.NumberOfSalesUnion allselect 'SalesInDollars', b.sale_date, b.SalesInDollarsfrom (select max(SalesInDollars) SalesInDollars from #startPeriods) ajoin #StartPeriods b on b.SalesInDollars = a.SalesInDollarsunion allselect 'avgSales', b.sale_date, b.avgSalesfrom (select max(avgSales) avgSales from #startPeriods) ajoin #StartPeriods b on b.avgSales = a.avgSalesOutput:Metric sale_date NumberOfSales -------------- ------------------------------------------------------ --------------------- NumberOfSales 2005-01-20 16:41:00 6.0000SalesInDollars 2005-01-20 16:41:00 232.2300avgSales 2005-01-01 11:50:00 50.1025
Be One with the OptimizerTG