想要实现查询当前表中 如果某个字段为0就显示上个月的数据 这个条件应该怎么写
select YEAR||'.'||MONTH as time ,PROD_CLASS_NAME 产品大类名称, SUTSOURCING_SELF_MARK 外购自产标志,
SUM(PIAN_WT) /10000 计划量,
SUM(CONTRACT_WT)/10000 合同量,
SUM(FINISH_RATE) /count(COMPANY_NAME) 合同完成率,
SUM(SERVICE_WT)/10000 送达量,
SUM(SETTLEMENT_PRICE)/count(COMPANY_NAME) 结算价格
from MAMC00.T_ADS_SRV_JYCG_0001
where YEAR||MONTH = (select max(YEAR||MONTH) from MAMC00.T_ADS_SRV_JYCG_0001
where 1=1
${if(len(COMPANY_NAME) == 0,"","and COMPANY_NAME = '" + COMPANY_NAME + "'")})
--to_char(current_timestamp, 'YYYYMM')
${if(len(COMPANY_NAME) == 0,"","and COMPANY_NAME = '" + COMPANY_NAME + "'")}
GROUP BY YEAR||'.'||MONTH ,PROD_CLASS_NAME,SUTSOURCING_SELF_MARK
order by YEAR||'.'||MONTH
如果合同量为0就显示上个月数据
db2支持开窗函数,可以使用lag来查上一行的记录
lag(SUM(CONTRACT_WT)/10000) over (partition by PROD_CLASS_NAME,SUTSOURCING_SELF_MARK order by YEAR||'.'||MONTH)
由于没有环境测试,而且你也没提供建表的sql,因此不确定DB2的开窗函数中是否允许使用聚合,如果不允许的话,请在外面再包一层,然后再用开窗函数