''和null的显示区别
在 MySQL 中,空字符串 ('') 和 NULL 的显示方式完全不同。
空字符串在 MySQL 中显示为空白(或一个看似空白的单元格,没有任何字符),而 NULL 值则明确显示为 NULL 字样。
null
和null的任何运算结果都是null
判断是否是null,用is null 不能用=
可以用ifnull函数判断一个值是否为null,如果为null,另赋一个值。如a.mainBusinessRevenue - ifnull(b.mainBusinessRevenue, 0)
对累增数据求每期数据
求差分,自联结本期和上期连接,比如按季度累增求每季度数据
select
a.taxpayerId,
DATE_FORMAT(a.taxPeriodEnd,"%Y%m") `统计周期`,
(a.mainBusinessRevenue - ifnull(b.mainBusinessRevenue, 0)) as `主营业务收入`
from
(select * from hxnew_center.hx_gxqy_cwbb WHERE
(MONTH(taxPeriodStart)=1 and MONTH(taxPeriodEnd) = 3) or
(MONTH(taxPeriodStart)=4 and MONTH(taxPeriodEnd) = 6) or
(MONTH(taxPeriodStart)=7 and MONTH(taxPeriodEnd) = 9) or
(MONTH(taxPeriodStart)=10 and MONTH(taxPeriodEnd) =12)
) a
left join
(select * from hxnew_center.hx_gxqy_cwbb WHERE
(MONTH(taxPeriodStart)=1 and MONTH(taxPeriodEnd) = 3) or
(MONTH(taxPeriodStart)=4 and MONTH(taxPeriodEnd) = 6) or
(MONTH(taxPeriodStart)=7 and MONTH(taxPeriodEnd) = 9) or
(MONTH(taxPeriodStart)=10 and MONTH(taxPeriodEnd) =12)
) b
on
quarter(a.taxPeriodEnd) = quarter(b.taxPeriodEnd) + 1
and a.year = b.year
and a.taxpayerId = b.taxpayerId构造一列数据,用于左连接
利用union将多个单值连成一列
select 2024
union all
select 2025
union all
select 2026这样就可以取这三年的数据,并且当数据中没有该年份时显示为空