|
最佳回答 |
0
|
dongazheLv6初级互助发布于2022-5-12 15:38(编辑于 2022-5-12 15:55)
|
SELECT * FROM ( SELECT P_BUKRS 公司, STR_TO_DATE( CONCAT( P_YEAR, P_MONTH,'-01'), "%Y%m" ) 日期, TEXT 类型, NCS 年初 FROM zfit02 WHERE TEXT = ' 应收账款' ) YB LEFT JOIN ( SELECT P_BUKRS 公司, STR_TO_DATE( CONCAT( P_YEAR, P_MONTH,'-01'), "%Y%m" ) 日期, TEXT 类型, NCS 年初 FROM zfit02 WHERE TEXT = ' 应收账款' ) TB ON YB.公司=TB.公司 AND YB.日期=date_format(date_sub(CONCAT(TB.日期,'-01'), interval 1 month),'%Y-%m');
|
|
|
|
最佳回答 |
0
|
LindaLv5见习互助发布于2022-5-12 15:38
|
AND YB.日期=date_sub(TB.日期 , interval 1 month)
|
|
|
|
最佳回答 |
0
|
CD20160914Lv8专家互助发布于2022-5-12 15:48
|
SELECT * FROM (SELECT P_BUKRS 公司, CONCAT( P_YEAR,'-' ,P_MONTH,'-01' ) 日期, TEXT 类型, NCS 年初 FROM zfit02 WHERE TEXT = ' 应收账款' ) YB LEFT JOIN ( SELECT P_BUKRS 公司, CONCAT( P_YEAR,'-' ,P_MONTH,'-01' ) 日期, TEXT 类型, NCS 年初 FROM zfit02 WHERE TEXT = ' 应收账款' ) TB ON YB.公司=TB.公司 AND date_format(YB.日期,'%Y-%m')=date_format(date_sub(TB.日期 , interval 1 month) ,'%Y-%m')
|
|
|
|
最佳回答 |
0
|
shinger@126.comLv2见习互助发布于2022-5-12 17:56(编辑于 2022-5-16 12:35)
|
你这求的是环比。同比是和上一年的数据对比,环比才是和上个月的数据对比。然后你不要用select *来返回数据,数据字段名重复了,帆软分不清改取哪个字段的数据,所以如果没有右表的数据,可能会直接给你返回NULL 然后就是,你的字段年和月是用的什么形式存储的?如果是整数型,2022和5这样,使用DATE_FORMAT(2022*10000+5*100+1,'%Y-%m')这种方式来得到2022-05格式的年月。如果是2022和05这样的字符串,DATE_FORMAT(CONCAT( '2022','05','01' ), '%Y-%m' )。以下代码假设你的年和月是用2022和05这样格式的字符串存储的脚本应该这么写。 ;with YB as ( #本期 SELECT P_BUKRS as 公司, DATE_FORMAT(CONCAT( P_YEAR, P_MONTH,'01' ), "%Y-%m" ) as 日期, TEXT as 类型, sum(NCS) as 年初 FROM zfit02 WHERE TEXT = ' 应收账款' GROUP BY by 公司,日期,类型 ),TB AS( #上期 SELECT P_BUKRS as 公司, DATE_FORMAT(adddate( CONCAT( P_YEAR, P_MONTH,'01' ),MONTH,1), "%Y-%m" ) 日期, TEXT 类型, SUM(NCS) 年初 FROM zfit02 WHERE TEXT = ' 应收账款' GROUP BY 公司,日期,类型 ) TB SELECT YB.公司,YB.日期,YB.类型,YB.年初,TB.年初 AS 同比年初 FROM YB JOIN TB ON YB.公司=TB.公司 AND YB.日期=TB.日期
|
|
|
|
最佳回答 |
0
|
梦似幻亦真Lv3见习互助发布于2022-5-16 17:47
|
date_sub(TB.日期 , interval 1 month) 这个会是空值,select date_sub('201901' , interval 1 month) 看下 建议在TB里面的查询就把日期减去一个月再格式化
|
|
|