-
-
花血色绽放 初学数据Lv2
发表于2018-6-28 09:58
楼主
当遇到一些不方便直接用BI主题表实现的分析需求时,通常会考虑用sql数据源来做表。以下简单总结了一些常用的sql数据源的写法,欢迎大家补充~
场景一、单级维,可多选,不做选择时缺省过滤<#=if(@cs='','1=1','standard in ('+replaceregex(@cs,'\\|',',', true)+')') #>
注:因为“|”这个符号在代码里面是有特定含义的,所以需要用\\转译一下。
场景二、单级维或者枚举下拉时,多选过滤时生成的sql是 in (110000,120000) ,怎样转换成 in('110000','120000') ?<#=if(@cs='','1=1',' xzqh in (\'' + replaceregex(@cs,"\\|",'\',\'') + '\')')#>
注:蓝色字体部分是拼接进去的字符串,由于嵌套使用单引号,所以内层的单引号前面加\转译一下。
场景三、多级维,可多选,分组节点以及叶子节点都允许选择,不做选择时缺省过滤<#=if(@cs="","1=1","(" + ([] + @cs.value).select(true,
if(@.level=0, "xzqh like '" + left(@,2) + "%'", if(@.level=1, "xzqh like '" + left(@,4) + "%'", "xzqh='" + @ + "'"))
).join(" or ") + ")")#>
场景四、通用维过滤,可多选,不做选择时缺省过滤select sum(a.DXDBSL) as B1,a.WLCCID as A1,max(b.WLCCMC) as mc_A10
from MQT_CW_GL_DXSLYJZ a
,MQT_DIM_WLCC b
where (A.WLCCID=B.WLCCID(+)) and
<#=if(@hhxx<>'', "(" +(@hhxx+"").split("\\|").select(true,"a.pp||'$'||a.dl||'$' ||a.xl like '"+@+"%'").join(" or ")+")","1=1") #>
group by a.WLCCID
场景一、单级维,可多选,不做选择时缺省过滤<#=if(@cs='','1=1','standard in ('+replaceregex(@cs,'\\|',',', true)+')') #>
注:因为“|”这个符号在代码里面是有特定含义的,所以需要用\\转译一下。
场景二、单级维或者枚举下拉时,多选过滤时生成的sql是 in (110000,120000) ,怎样转换成 in('110000','120000') ?<#=if(@cs='','1=1',' xzqh in (\'' + replaceregex(@cs,"\\|",'\',\'') + '\')')#>
注:蓝色字体部分是拼接进去的字符串,由于嵌套使用单引号,所以内层的单引号前面加\转译一下。
场景三、多级维,可多选,分组节点以及叶子节点都允许选择,不做选择时缺省过滤<#=if(@cs="","1=1","(" + ([] + @cs.value).select(true,
if(@.level=0, "xzqh like '" + left(@,2) + "%'", if(@.level=1, "xzqh like '" + left(@,4) + "%'", "xzqh='" + @ + "'"))
).join(" or ") + ")")#>
场景四、通用维过滤,可多选,不做选择时缺省过滤select sum(a.DXDBSL) as B1,a.WLCCID as A1,max(b.WLCCMC) as mc_A10
from MQT_CW_GL_DXSLYJZ a
,MQT_DIM_WLCC b
where (A.WLCCID=B.WLCCID(+)) and
<#=if(@hhxx<>'', "(" +(@hhxx+"").split("\\|").select(true,"a.pp||'$'||a.dl||'$' ||a.xl like '"+@+"%'").join(" or ")+")","1=1") #>
group by a.WLCCID
![](static/image/common/none.gif)
![](static/image/common/none.gif)
4个回答
sql数据源中的like参数值的写法可参考如下:
select CODE from BI_GIS_QH where NAME like <#="'"+@bbq+"%'"#>
sql数据源起止日期的判空写法可参考如下:
select BBQ,XZQHDM,CB from QC_JG_762 where <#=if(len(@p7528)=0,'1=1',"BBQ >= '"+@p7528_s+"' AND BBQ<= '"+@p7528_e+"'")#>