2014-10-29 81 views
0

使用:SQL Server 2008 R2的SQL - 收集最古老和最新紀錄,並獲得天之間

是否有可能,不使用CTE,以獲得最古老和最新的記錄,然後得到的天(DATEDIFF)在一個SELECT語句中?

爲了澄清,這是我目前的SELECT語句:

SELECT 
COUNT(*) as 'Sessions', 
MAX(f_sessiondate) AS 'Latest', 
MIN(f_sessiondate) as 'Oldest' 

所以,說我得到以下結果

Sessions   Latest       Oldest 
2610    2014-10-28 00:00:00.000  2013-12-23 00:00:00.000 

我想是得到「平均會話每一天」在「最新」和「最舊」條目之間做一個DATEDIFF。所以'天'是309,而「每天平均會話」將是8.45(四捨五入)。

編輯

靠運氣的一些行程,我得到它的工作在一定程度上,雖然我很想念我的小數。以下是我添加的內容:

CAST(COUNT(*)/DATEDIFF(day, MIN(f_sessiondate),MAX(f_sessiondate)) as DECIMAL(18,2)) as 'Average Sessions Fixed', 

根據以上(更新後)的數字,我會得到8.44(309天)的結果。但是,SQL給了我8.00的結果。我怎樣才能得到正確的小數?

由於提前,

Beems

+2

您應該將您的點數(*)作爲小數點。 – Will 2014-10-29 16:04:38

+2

CAST(cast(COUNT(*)爲十進制)/ DATEDIFF .....) – Will 2014-10-29 16:06:48

+0

這樣做了,謝謝。你能否將其作爲正式答覆發佈,以便我可以標記它? – Beems 2014-10-29 16:08:22

回答

1

默認數是整數,任何數學運算,將導致一個整數。要產生小數,首先在執行操作之前將計數(*)轉換爲小數。

CAST(CAST(COUNT(*) as Decimal)/DATEDIFF(day, MIN(f_sessiondate),MAX(f_sessiondate)) as DECIMAL(18,2)) as 'Average Sessions Fixed',