2013-07-18 146 views
3

我從數據庫中的一些數據,但其僅4個月了今年。我希望它能夠全部返回12個月。使用SQL Server Management Studio 2010中這裏Im是SQL代碼返回所有月份,而不是僅僅4

SELECT Month = datename(month,dateadd(mm,datediff(mm,0,StartTime),0)), Count (TestName) 
FROM VExecutionGlobalHistory 
Where Tester <> 'dit2988'  
group by 
dateadd(mm,datediff(mm,0,StartTime),0), year(dateadd(mm,datediff(mm,0,StartTime),0)) 
order by 
dateadd(mm,datediff(mm,0,StartTime),0), year(dateadd(mm,datediff(mm,0,StartTime),0)) 

這將返回

|April|92 | 
|May |79 | 
|June |164 | 
|July |162 | 

,我想也有一些硬編碼的數據添加到返回,並有七月最新的,所以我會有這樣的事情。

|August |number| 
|September|number| 
|October |number| 
|November |number| 
|December |number| 
|January |number| 
|February |number| 
|March |number| 
|April |92 | 
|May  |79 | 
|June  |164 | 
|July  |162 | 

,所有的「數字」是那些從的arent數據庫拉,只是我希望把

建議?

+0

您的查詢沒有返回那些其他月份的數據。 – RBarryYoung

回答

2

只需創建從最初的日期到你想要的最後日期理貨,並做了左按月數和年與您的數據連接:

DECLARE @start_date DATETIME, @end_date DATETIME; 

SELECT @start_date = CAST('2010-08-01' AS DATETIME), 
    @end_date = CAST('2011-07-01' AS DATETIME); 

WITH MonthTally(initial_date,month_name, month_number, year_number) AS 
(
    SELECT @start_date initial_date, datename(month,@start_date) month_name, month(@start_date) month_number, year(@start_date) year_number 
    UNION ALL 
    SELECT DATEADD(month,1,initial_date), datename(month, DATEADD(month,1,initial_date)), month(DATEADD(month,1,initial_date)), year(DATEADD(month,1,initial_date)) 
    FROM MonthTally 
    WHERE initial_date < @end_date 
) 
SELECT month_name, Count(TestName) 
FROM MonthTally MT 
    LEFT JOIN VExecutionGlobalHistory V ON MT.year_number=YEAR(V.StartTime) AND MT.month_number=MONTH(V.StartTime) AND Tester <> 'dit2988'  
group by 
    month_name, year_number, month_number 
order by 
    year_number, month_number 

檢查功能例如here。因爲在`VExecutionGlobalHistory`對於那些月無數據(`儀<>「dit2988'` excpet可能)

+0

這不返回任何數據,我錯過了什麼? – Monz

+0

你有沒有試圖改變的'@ start_date'和'@值end_date'to的時間框架做自己想做的搜索?如果是這樣,那麼,而不是你的選擇,嘗試'SELECT * FROM MonthTally'來檢查哪些月份由CTE生成。你也可以發佈存儲在VExecutionGlobalHistory上的數據的一個例子,我將根據你的例子在SQLFiddle中發佈查詢。 –

+0

我查看了代碼,並刪除了一些不必要的字段,並按子句排序。 –

相關問題