这个折线图我在设计器里面sql写了日期往前推30天可是折线图是显示不对

WITH TD AS(

--当日数据

SELECT 

T1.SALENO,

TO_CHAR(T2.FINALTIME, 'YYYY-MM-DD') AS SJD,

COUNT(DISTINCT T1.SALENO) AS DDS,--订单数

SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.netprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2)) AS NETSUM,

        SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.stdprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2)) AS STDSUM,

        SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.stdprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times * T1.disrate 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2) * T1.disrate) AS DISCOUNT,

        SUM(T1.WAREQTY) AS WAREQTY,--商品支付件数

        COUNT( RECEIVER_DETAIL_ADDRESS) AS SHDZ --收货地址

    FROM H2.T_SALE_D@DBLINK_HYDEE T1

    LEFT JOIN H2.T_SALE_H@DBLINK_HYDEE T2 ON T1.SALENO = T2.SALENO

    LEFT JOIN H2.D_QM_SALE_H@DBLINK_HYDEE T4 ON T4.SALENO = T2.SALENO 

    LEFT JOIN DIM_SHOP DS ON DS.SHOPCODE = T1.BUSNO

    LEFT JOIN H2.T_WARE@DBLINK_HYDEE TW ON TW.WAREID = T1.WAREID

    

  WHERE  1 = 1

AND T1.ACCDATE=TRUNC(SYSDATE) AND TRUNC(SYSDATE)=TO_DATE('${p_enddate}','YYYY-MM-DD')

  --门店

${IF(LEN(p_shop) = 0,"","AND DS.SHOPCODE IN ('"+p_shop+"')")}

--商品

${IF(LEN(p_shopname) = 0,"","AND TW.WAREID IN ('"+p_shopname+"')")}

  -- 查询对应平台的支付方式

${IF(LEN(p_platform)=0,"AND T2.BTC_TYPE IN ('"+p_ms+"')"," AND T2.BTC_TYPE IN('"+p_ms+"') AND T2.BTC_PLACE_NAME IN ('"+p_platform+"') ")}

    

    GROUP BY T1.SALENO,TO_CHAR(T2.FINALTIME, 'YYYY-MM-DD')

    union all

    --非当日

    SELECT 

T1.SALENO,

TO_CHAR(T2.FINALTIME, 'YYYY-MM-DD') AS SJD,

COUNT(DISTINCT T1.SALENO) AS DDS,--订单数

SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.netprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2)) AS NETSUM,

        SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.stdprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2)) AS STDSUM,

        SUM(ROUND(

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.stdprice 

                  ELSE T1.recnetprice_gjt END) 

            * T1.wareqty * T1.times * T1.disrate 

            + T1.minqty * T1.times * 

            (CASE WHEN T2.recalculate_flag = 0 THEN T1.minprice 

                  ELSE T1.recnetprice_gjt END), 2) * T1.disrate) AS DISCOUNT,

        SUM(T1.WAREQTY) AS WAREQTY,--商品支付件数

        COUNT( RECEIVER_DETAIL_ADDRESS) AS SHDZ --收货地址

    FROM BIUSER.ODS_T_SALE_D T1

    LEFT JOIN BIUSER.ODS_T_SALE_H T2 ON T1.SALENO = T2.SALENO

    LEFT JOIN ODS_D_QM_SALE_H T4 ON T4.SALENO = T2.SALENO 

    LEFT JOIN DIM_SHOP DS ON DS.SHOPCODE = T1.BUSNO

    LEFT JOIN ODS_T_WARE TW ON TW.WAREID = T1.WAREID

  WHERE  1 = 1

    --门店

${IF(LEN(p_shop) = 0,"","AND DS.SHOPCODE IN ('"+p_shop+"')")}

--商品

${IF(LEN(p_shopname) = 0,"","AND TW.WAREID IN ('"+p_shopname+"')")}

 -- 查询对应平台的支付方式

${IF(LEN(p_platform)=0,"AND T2.BTC_TYPE IN ('"+p_ms+"')"," AND T2.BTC_TYPE IN('"+p_ms+"') AND T2.BTC_PLACE_NAME IN ('"+p_platform+"') ")}

${if(p_startdate = p_enddate," and T1.ACCDATE between TO_DATE('"+ p_enddate +"','YYYY-MM-DD') -30  and TO_DATE('"+ p_enddate +"','YYYY-MM-DD')"," AND T1.ACCDATE between TO_DATE('"+p_startdate+"','YYYY-MM-DD') and TO_DATE('"+p_enddate+"','YYYY-MM-DD') ")} and T1.ACCDATE != TRUNC(SYSDATE)

    

    GROUP BY T1.SALENO,TO_CHAR(T2.FINALTIME, 'YYYY-MM-DD')

    

)

SELECT 

SJD,

SUM(DDS) AS DDS,--订单数

SUM(CASE WHEN NETSUM<0 THEN 1 ELSE 0 END) AS BACK_NUMBER, --退款订单数

SUM(NETSUM) AS NETSUM,--支付金额

SUM(WAREQTY) AS WAREQTY,--商品支付件数

SUM(NETSUM)/SUM(DDS) AS KDJ,-- 客单价

1-SUM(DISCOUNT) / NULLIF(SUM(STDSUM), 0) AS ZKL,--折扣率

SUM(SHDZ) AS SHDZ--收货地址

FROM TD

GROUP BY SJD

ORDER BY SJD

image.png

FineReport 帆软用户T8KW6ag30L 发布于 6 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
ScyalcireLv7高级互助
发布于6 天前

当前SQL中同时存在T1.ACCDATE=TRUNC(SYSDATE)T1.ACCDATE != TRUNC(SYSDATE)的冲突条件,可能导致数据过滤异常

-----

日期格式不一致

  • TO_CHAR(T2.FINALTIME, 'YYYY-MM-DD')与参数${p_enddate}的格式需确保一致,否则排序可能错乱5

  • 检查数据库字段FINALTIMEACCDATE是否为DATE类型,避免隐式转换问题

最佳回答
0
Z4u3z1Lv6专家互助
发布于6 天前

把日志级别改成debug再预览,然后去日志里面提取带参后的SQL,执行这个SQL看数据集是什么情况

最佳回答
0
用户k6280494Lv6专家互助
发布于6 天前

${if(p_startdate = p_enddate," and T1.ACCDATE between TO_DATE('"+ DATEDELTA(p_enddate,-30) +"','YYYY-MM-DD') and TO_DATE('"+ p_enddate +"','YYYY-MM-DD')"," AND T1.ACCDATE between TO_DATE('"+p_startdate+"','YYYY-MM-DD') and TO_DATE('"+p_enddate+"','YYYY-MM-DD') ")}

  • 3关注人数
  • 34浏览人数
  • 最后回答于:6 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部