0

我正在使用 Microsoft SQL Server Management Studio,我正在尝试执行以下操作:我想进行一个查找过去 2 个月和“当前”月份的计算。

月份和年份定义如下:

SELECT
    ID,
    dc.Year * 100 + dc.MonthOfYear AS YYYMM,
    dc.Year * 100 + dc.MonthOfYear - 1 AS PrevMonth,
    COUNT(1) AS Count_sales,
    SUM(sales) AS TotalSales
FROM
    xx (NOLOCK) dc
GROUP BY
    dc.Year * 100 + dc.[Month Of Year] 

当我有问题时会出现问题,202101因为上个月被视为202102任何知道如何处理年份变化时的问题吗?

我尝试使用以下内容,但在 SQL Server 中,该add_months函数不存在:

Hive SQL 整数 YYYYMM 前几个月

请问有什么建议吗?

4

1 回答 1

0

它不会是最漂亮的代码,但您可以在此处使用案例:

select 
    ID
    ,dc.Year*100+dc.MonthOfYear as YYYMM
    ,case when dc.MonthOfYear = 1 then dc.Year-1 else dc.Year end * 100 + dc.MonthOfYear - (case when dc.MonthOfYear = 1 then -11 else 1 end) as PrevMonth
    ,dc.MonthOfYear-case when dc.MonthOfYear = 1 then -11 else 1 end as PrevMonthXX
    ,count(1) as Count_sales
    ,sum(sales) as TotalSales
from xx (nolock) dc
group by dc.Year*100+dc.[Month Of Year] 

保存为常规日期通常更容易,如果以后需要单独保存年份和月份,则只需取出年份和月份。但有时你只需要凑合你所拥有的..

于 2021-03-30T15:36:30.823 回答