2013-12-12 213 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))