我需要编写一个SQL查询以生成以下结果集。达到此目的的最佳方式是什么?SQL Server组过去24小时,过去7天和过去14天
Time Range Qty Amount
===============================================
Last 24 Hours 56 $2000
Last 7 Days 359 $3900
Last 14 Days 2321 $22,888
我需要编写一个SQL查询以生成以下结果集。达到此目的的最佳方式是什么?SQL Server组过去24小时,过去7天和过去14天
Time Range Qty Amount
===============================================
Last 24 Hours 56 $2000
Last 7 Days 359 $3900
Last 14 Days 2321 $22,888
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())
谢谢Andomar。这也是我能想到的。只是想知道是否有更聪明的方式来转发数据? – Chen 2012-07-31 05:35:20
我的第一个猜测是使用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
可以在DATEADD使用where子句等
select * from table
where datefield > DateAdd(d,-1,getdate())
SELECT * FROM表 其中的DateField>使用DateAdd(d,-7,GETDATE()) SELECT * FROM表 其中的DateField > DateAdd(d,-14,getdate())
for day等
select * from table where datefield> DateAdd(d,-1,getdate()) – 2012-07-24 08:21:51
您使用的是哪个数据库? – Andomar 2012-07-24 05:53:14
什么是输入表? – 2012-07-24 05:53:41