最近24小时,过去7天和过去14天的SQL Server组

时间:2012-07-24 05:42:32

标签: sql pivot

我需要编写一个SQL查询来生成以下结果集。实现这一目标的最佳方法是什么?

Time Range          Qty                Amount
===============================================
Last 24 Hours       56                 $2000
Last 7 Days         359                $3900
Last 14 Days        2321               $22,888

3 个答案:

答案 0 :(得分:4)

select  'Last 24 hours'
,       sum(Qty) as Qty
,       sum(Amount) as Amount
from    YourTable
where   TradeDt > dateadd(hour, -24, getdate())
union all
select  'Last 7 days'
,       sum(Qty)
,       sum(Amount)
from    YourTable
where   TradeDt > dateadd(day, -7, getdate())
union all
select  'Last 14 days'
,       sum(Qty)
,       sum(Amount)
from    YourTable
where   TradeDt > dateadd(day, -14, getdate())

答案 1 :(得分:1)

我的第一个猜测是使用UNION,如果你绝对需要一个表作为结果(否则,你可以逐行获取数据)。

我认为在SQL中没有更好的方法可以做到这一点。

SELECT 'Last 24 hours', SUM(qty), SUM(amount)
 FROM table
 WHERE datediff(day, getdate(), date) = 1

UNION

SELECT 'Last 7 days', SUM(qty), SUM(amount)
 FROM table
 WHERE datediff(getdate(), date, 'day') < 7

UNION

SELECT 'Last 14 days', SUM(qty), SUM(amount)
 FROM table
 WHERE datediff(getdate(), date, 'day') < 14

答案 2 :(得分:0)

你可以在dateAdd上使用where子句,如

select * from table
where datefield > DateAdd(d,-1,getdate())

从表中选择*     其中datefield&gt;使用DateAdd(d,-7,GETDATE()) 从表中选择*     其中datefield&gt;使用DateAdd(d,-14,GETDATE())

一天等等