我需要編寫一個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