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 に答える