关于参数为空,显示所有数据问题(补贴)

SQL太复杂,有采用union all,仅参数相同,条件不同,怎么处理?

FineReport zjp@123 发布于 2019-9-11 10:00 (编辑于 2019-9-11 10:04)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
axingLv6专家互助
发布于2019-9-16 21:42


select 
COUNT(*) AS 次数,
TO_CHAR(QJKSSJ,'YYYY-MM') as KS,XM,DW,SY,
SUM(
CASE 
  WHEN TO_CHAR(QJKSSJ,'YYYY-MM') =TO_CHAR(QJJSSJ,'YYYY-MM') THEN TS
 ELSE
TO_CHAR(last_day(add_months(QJKSSJ, 0)) - QJKSSJ +1) END
) as 天数合计
from DM_QJHZ  WHERE 1=1
${if(len(YF)==0,"","AND TO_CHAR(QJKSSJ,'YYYY-MM')='"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJKSSJ,'YYYY-MM')

union all
select 
COUNT(*) as 次数,
TO_CHAR(QJJSSJ,'YYYY-MM') as KS,XM,DW,SY,
SUM(
CASE 
  WHEN TO_CHAR(QJKSSJ,'YYYY-MM') =TO_CHAR(QJJSSJ,'YYYY-MM') THEN TS
 ELSE
TO_CHAR(QJJSSJ- trunc(QJJSSJ,'MONTH')+1) END
) as 天数合计
from DM_QJHZ  
WHERE TO_CHAR(QJKSSJ,'YYYY-MM') !=TO_CHAR(QJJSSJ,'YYYY-MM') 
${if(len(YF)==0,"","AND TO_CHAR(QJJSSJ,'YYYY-MM')='"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJJSSJ,'YYYY-MM')

union all
select 
COUNT(*) as 次数,
'${YF}'  as KS,XM,DW,SY,
SUM(
TO_CHAR(last_day(add_months(TO_DATE('${YF}' ,'YYYY-MM'), 0)) - trunc(TO_DATE('${YF}','YYYY-MM'),'MONTH')+1) 
) as 天数合计
from DM_QJHZ  
WHERE 1=1
${if(len(YF)==0,"","AND TO_CHAR(QJKSSJ,'YYYY-MM')<'"+YF+"' AND TO_CHAR(QJJSSJ,'YYYY-MM') >'"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJJSSJ,'YYYY-MM')


最佳回答
0
豆豆小可爱Lv5中级互助
发布于2019-9-11 10:11

下拉框参数为空选择全部-https://help.finereport.com/doc-view-2394.html

下拉复选框参数为空选择全部-https://help.finereport.com/doc-view-2395.html

参考参考帮助文档


最佳回答
0
麦兜的兜Lv3见习互助
发布于2019-9-11 11:20

每一个里面都加筛选条件在union all 

最佳回答
0
孙一Lv4见习互助
发布于2019-9-11 14:03

参数相同,条件不同 指的是UNION ALL里每一段用的都是同样的参数,但是同一个参数在每一段查询里的条件不一样吗?如果是的话就需要在每一段都把查询条件写上了,写法一楼的仁兄已经贴了链接。

最佳回答
0
GT1024Lv0见习互助
发布于2019-9-17 08:29

常用的WHERE后查询条件的使用举例

SELECT * FROM SALE_ORDER DD WHERE 1=1

${if(len(bgnRptdate) == 0,"","and DD.POSTING_DATE >= TO_DATE('" + bgnRptdate +"', 'yyyy-MM-dd')")} 

${if(len(endRptdate) == 0,"","and DD.POSTING_DATE <= TO_DATE('" + endRptdate +"', 'yyyy-MM-dd')")} 

${if(len(product) == 0,"","and DD.PRODUCT_ID IN ('" + product + "')")}  

${if(len(payment) == 0,"","and 1<>1")}


  • 6关注人数
  • 772浏览人数
  • 最后回答于:2019-9-17 08:29
    请选择关闭问题的原因
    确定 取消
    返回顶部