用于选择特定日期范围的SQL查询(例如仅当前月份)

时间:2015-07-09 20:07:25

标签: sql sql-server-2012

我在SQL Server 2012中工作。

我正在尝试收集当月(2015-07)的所有数据并对其进行分组。当我运行此查询时,它仅选择当天。

SELECT
    YEAR, MONTH, IDWHSE, IDLOCATION, IDCUST, 
    SUM(PALLETDAYS) AS PALLETDAYS, 
    COUNT(*) AS LOCATIONDAYS
FROM 
    [METRICS].[dbo].[DailyData]
WHERE
    DATE = CONVERT(date, DATEADD(MM, 0, GETDATE()))
GROUP BY 
    YEAR, MONTH, IDWHSE, IDLOCATION, IDCUST, PALLETDAYS

提前致谢

格里

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT
    YEAR, MONTH, IDWHSE, IDLOCATION, IDCUST, 
    SUM(PALLETDAYS) AS PALLETDAYS, 
    COUNT(*) AS LOCATIONDAYS
FROM 
    [METRICS].[dbo].[DailyData]
WHERE
    MONTH(DATE) = MONTH(SYSDATETIME())
GROUP BY 
    YEAR, MONTH, IDWHSE, IDLOCATION, IDCUST, PALLETDAYS

使用MONTH()函数,您可以获得月份编号 - 您的列Date(这是一个非常糟糕的列名称,因为DATE也是保留的SQL Server 2012中数据类型的关键字 - 尝试使用比Date更有意义的东西!)和当前日期(我更喜欢SYSDATETIME()函数而不是GETDATE()