2013-12-12 173 views
0

的MM-YYYY一部分,我需要根據&需要集團向外界展示求職申請的數量在12個月他們還根據職位申請日期SQL查詢來算基於日期

我試圖跟隨它生成錯誤如下所示。

SELECT 
    COUNT(MONTH(ApplicationDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ApplicationDate) AS VARCHAR(4)) AS Total, 
    ApplicationDate 
FROM 
    [Jobs] 
GROUP BY 
    ApplicationDate, ApplicationDate 
ORDER BY 
    ApplicationDate 

但是,這導致錯誤:

Msg 195, Level 15, State 10, Line 9
'COUNT' is not a recognized built-in function name.

我需要它的SQL Server 2008

最終工作液

SELECT 
MONTH(ApplicationDate), YEAR(ApplicationDate), COUNT(*) AS Total, 
    (CAST(MONTH(ApplicationDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ApplicationDate) AS VARCHAR(4))) as ApplicationDate 
    FROM [Jobs] 
GROUP BY YEAR(ApplicationDate), MONTH(ApplicationDate) 

ORDER BY 
     YEAR(ApplicationDate), MONTH(ApplicationDate) 

回答

0

這件怎麼樣?

SELECT 
     COUNT(*) AS Total, 
     (CAST(MONTH(ApplicationDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ApplicationDate) AS VARCHAR(4))) as ApplicationDate 
    FROM 
     [Jobs] 
    GROUP BY 
     (CAST(MONTH(ApplicationDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ApplicationDate) AS VARCHAR(4))) 
    ORDER BY 
     ApplicationDate 

投功能失蹤了一個月。輸出如下。

Total ApplicationDate 
22217 7-2012 
17979 8-2012 
30341 9-2012 

編輯排序...

如果你不講究 'MM-YYYY' 格式。將月份/年份組合轉換爲編號和順序。嘗試這個。

SELECT 
    COUNT(*) AS Total, 
    RIGHT(CONVERT(VARCHAR(10), ApplicationDate, 103), 7) as ApplicationDate, 
    CAST(REPLACE(RIGHT(CONVERT(VARCHAR(10), ApplicationDate, 103), 7), '/', '') as int) as numdate 
FROM 
    [Jobs] 
GROUP BY 
    RIGHT(CONVERT(VARCHAR(10), ApplicationDate, 103), 7) 
ORDER BY 
    numdate,ApplicationDate 
+0

這是沒有得到想要的結果多爲MM-YYYY,這表明1 \t 2012年9月21日 '1 \t 2013年9月1日 2013-09- 06 2013年9月8日 2013年9月9日 2013年9月11日1 \t 2013年9月19日1 \t 2013年9月21日 2013年9月22日 2013-09-24 2013-09-26 2013年10月6日 2013年12月11日 2013-12-12' – Learning

+0

@KnowledgeSeeker清潔香港的編輯查詢 – ray

+0

它現在..謝謝.. – Learning

1

你需要嘗試這樣的事情每月/每年獲得一行,其中包含當月/年的申請數:

SELECT 
    MONTH(ApplicationDate), 
    YEAR(ApplicationDate), 
    COUNT(*) 
FROM 
    dbo.[Jobs] 
GROUP BY 
    YEAR(ApplicationDate), 
    MONTH(ApplicationDate) 
ORDER BY 
    YEAR(ApplicationDate), 
    MONTH(ApplicationDate) 

這也計算每月/每年的應用程序和它的組。你應該得到的輸出是這樣的:

enter image description here

這是從AdventureWorks樣本數據庫拍攝)

如果你做一個GROUP BY ApplicationDate,那麼你基本上分組/計數由實際日期本身(而不是它的月/年的部分)

更新:如果你必須具有SQL Server提供的MM-YYYY格式格式化(真的應該在你的web應用程序通過SQL Server上完成,而不是),那麼試試這個:

;WITH GroupedData AS 
(
    SELECT 
     DateMonth = MONTH(ApplicationDate), 
     DateYear = YEAR(ApplicationDate), 
     JobsCount = COUNT(*) 
    FROM 
     dbo.[Jobs] 
    GROUP BY 
     YEAR(ApplicationDate), 
     MONTH(ApplicationDate) 
) 
SELECT 
    RIGHT('00' + CAST(DateMonth AS VARCHAR(2)), 2) + '-' + 
    CAST(DateYear AS VARCHAR(4)), 
    JobsCount 
FROM 
    GroupedData 
ORDER BY 
    DateMonth, DateYear 
+0

到目前爲止您的查詢得到正確的結果,但我需要另一列這表明MM-YYYY我不能使用它,我嘗試,但它給我的錯誤或者得到錯誤的結果。我怎樣才能修改它與我們的效果結果。 – Learning

+0

@KnowledgeSeeker:更新我的反應,包括您的格式需要 –

0

嘗試......

SELECT DATENAME(month,ApplicationDate) + ' ' + CAST(DATEPART(year,ApplicationDate) AS VARCHAR(4)), 
     COUNT(1) TotalCnt 
FROM dbo.[Jobs] 
GROUP BY DATENAME(month,ApplicationDate) + ' ' + CAST(DATEPART(year,ApplicationDate) AS VARCHAR(4))