数据集参数,实现一个数据集同时统计多个时间段的SQL写法

如图所示,时间有三个,本期,同比上期,环比上期。

希望在设置数据集参数时,根据面板筛选的上述三个时间,数据集统计这三个时间段的数据汇总。

目前我的写法有问题,预览无法出数。

想要实现我的效果,SQL应该如何写?

image.png

FineReport 帆软用户isPbG51FBd 发布于 2024-11-4 12:40
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2024-11-4 12:50

本期,同比上期,环比上期分开写

写三段SQL,在union all就好了

最佳回答
0
CD20160914Lv8专家互助
发布于2024-11-4 13:17(编辑于 2024-11-4 13:30)

不知道你是什么数据库,用sql server举例说明类似这样

写两个子查询

SELECT 

    s.ProductName,

    s.Amount AS CurrentAmount,

    COALESCE(

        (SELECT Amount 

         FROM Sales s2 

         WHERE s2.ProductName = s.ProductName 

           AND s2.SaleDate >= '${DATEINMONTH(MONTHDELTA(CONCATENATE(date_month,"-01"),-1),1)}'/*环比*/

            AND s2.SaleDate >='${DATEINMONTH(MONTHDELTA(CONCATENATE(date_month,"-01"),-1),-1)}'

    ) AS PreviousPeriodAmount,

    COALESCE(

        (SELECT Amount 

         FROM Sales s3 

         WHERE s3.ProductName = s.ProductName 

           AND s3.SaleDate >= '${YEARDELTA(CONCATENATE(date_month,"-01"),-1)}'

           AND s3.SaleDate >= '${DATEINMONTH(YEARDELTA(CONCATENATE(date_month,"-01"),-1),-1)}'

    ) AS SamePeriodLastYearAmount

FROM 

    Sales s

WHERE 

    s.SaleDate = '${date_month}'/*SaleDate 是年月字段,你可以自己处理成年月*/

  • 3关注人数
  • 146浏览人数
  • 最后回答于:2024-11-4 13:30
    请选择关闭问题的原因
    确定 取消
    返回顶部