【mysql】查询本月和去年同期数据SQL

思路

  1. 首先将数据源中的日期字段,使用日期格式化函数,格式化为Y-M的形式
  2. 增加一列,使用日期格式化函数,获取去年的月份信息,命名为LAST_DATE
  3. 对同一个视图,进行左连接,获取当月的金额以及去年该月份的金额

实现关键代码

生成中间视图:

SELECT
    sum(`c`.`DISTRIBUTION_MONEY_`) AS `C_MONEY_`,
    `c`.`BRAND_TYPE_` AS `C_TYPE_`,
    (
        CASE
        WHEN (
            (`c`.`CITY_` = '咸阳市')
            OR (`c`.`CITY_` = '宝鸡市')
            OR (`c`.`CITY_` = '汉中市')
            OR (`c`.`CITY_` = '安康市')
        ) THEN
            '宝鸡'
        WHEN (
            (`c`.`CITY_` = '渭南市')
            OR (`c`.`CITY_` = '商洛市')
            OR (`c`.`CITY_` = '榆林市')
            OR (`c`.`CITY_` = '延安市')
        ) THEN
            '渭南'
        ELSE
            '西安'
        END
    ) AS `C_RESION_`,
    date_format(
        (
            `c`.`SIGNING_DATE_` - INTERVAL 1 YEAR
        ),
        '%Y-%m'
    ) AS `C_LAST_DATE_`,
    date_format(
        `c`.`SIGNING_DATE_`,
        '%Y-%m'
    ) AS `C_DATE_`
FROM
    `t_import_contract_detail` `c`
WHERE
    (1 = 1)
GROUP BY
    `c`.`BRAND_TYPE_`,
    `C_RESION_`,
    `C_DATE_`

核心代码:

date_format(
        (
            `c`.`SIGNING_DATE_` - INTERVAL 1 YEAR
        ),
        '%Y-%m'
    ) AS `C_LAST_DATE_`,
    date_format(
        `c`.`SIGNING_DATE_`,
        '%Y-%m'
    ) AS `C_DATE_`

使用左连接,从而获取本月的去年同期数据

SELECT
    `a`.`C_TYPE_` AS `C_TYPE_`,
    `a`.`C_RESION_` AS `C_RESION_`,
    `a`.`C_DATE_` AS `C_DATE_`,
    `a`.`C_MONEY_` AS `C_MONEY_`,
    `a`.`C_LAST_DATE_` AS `C_LAST_DATE_`,
    `b`.`C_MONEY_` AS `C_LAST_MONEY`
FROM
    (
        `v_chart_contract` `a`
        LEFT JOIN `v_chart_contract` `b` ON (
            (
                (
                    `a`.`C_LAST_DATE_` = `b`.`C_DATE_`
                )
                AND (
                    `a`.`C_RESION_` = `b`.`C_RESION_`
                )
                AND (
                    `a`.`C_TYPE_` = `b`.`C_TYPE_`
                )
            )
        )
    )

核心代码:

a`.`C_LAST_DATE_` = `b`.`C_DATE_`

效果

这里写图片描述

文章来源: 【mysql】查询本月和去年同期数据SQL

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:【mysql】查询本月和去年同期数据SQL