【mysql】查詢本月和去年同期資料SQL
阿新 • • 發佈:2019-01-23
思路
- 首先將資料來源中的日期欄位,使用日期格式化函式,格式化為Y-M的形式
- 增加一列,使用日期格式化函式,獲取去年的月份資訊,命名為LAST_DATE
- 對同一個檢視,進行左連線,獲取當月的金額以及去年該月份的金額
實現關鍵程式碼
生成中間檢視:
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_`