SQL Server:在一个选择中组合多个计数

时间:2014-04-02 21:10:57

标签: sql sql-server count

我对SQL很陌生,正在寻求以下方面的帮助:

我想计算当前+前5个月“esc”列中的项目数,并希望在一个查询中完成此操作。 我需要的只是这6个月中每个月的数字。

我的SP(不工作):

SELECT
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), GETDATE(), 112) + '01', 112)),
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -1, GETDATE()), 112) + '01', 112)),
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -2, GETDATE()), 112) + '01', 112)),
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -3, GETDATE()), 112) + '01', 112)),
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -4, GETDATE()), 112) + '01', 112)),
    (SELECT COUNT(*) FROM Log_Esc WHERE CONVERT(DATE, dateEsc, 120) >= CONVERT(DATE, CONVERT(VARCHAR(6), DATEADD(month, -5, GETDATE()), 112) + '01', 112))
FROM Log_Esc
FOR XML PATH('total'), ROOT('ranks')

有人可以告诉我如何更改它以使其正常工作吗?

非常感谢任何帮助,Mike

1 个答案:

答案 0 :(得分:0)

可以比较两个日期。 GETDATE()返回一个datetime对象 只需将dateesc上的转换转换为日期或日期时间类型即可 另外,不要忘记为列添加别名。