0

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

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

3 回答 3

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())
于 2012-07-24T05:52:55.167 回答
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
于 2012-07-24T05:54:00.707 回答
0

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

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

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

一天等

于 2012-07-24T05:56:43.800 回答