select A.organ_code AS organ_code , A.organ_name AS organ_name , A.comm_id AS comm_id , A.comm_name AS comm_name , A.MeterType AS MeterType , A.list_ym AS list_ym , A.Dosage AS Dosage , A.Amount AS Amount , B.StateNameNew AS StateNameNew ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) AS DOSAGE_PER_SQUARE_METER from ( SELECT organ_code , organ_name , comm_id , comm_name , MeterType , list_ym , Dosage , Amount FROM dws_engine_meter_dosage_m ${IF(p_type = "环比","/*","")} where 1=1 AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m') AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}' ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")} and MeterType in ('水表','电表') order by list_ym asc ${IF(p_type = "环比","*/","")} ${IF(p_type = "环比","","/*")} where left(list_ym,4) = ${left(p_ym,4)} AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m') and MeterType in ('水表','电表') ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ORDER BY list_ym ASC ${IF(p_type = "环比","","*/")} )A LEFT JOIN ( select CommId -- 项目id ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew ELSE '商住' END AS StateNameNew ,SUM(FloorArea + UndergroundArea) as totalarea ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) from dim_project_base_info_d GROUP BY CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew ELSE '商住' END )B ON A.comm_id = B.CommId ORDER BY A.list_ym,A.MeterType