ireport怎么进行模糊查询?

kwh186 2017-07-08 02:43:09
在ireport中怎么进行模糊查询,sql语句怎么写??
...全文
697 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1
like '%'||$P{param}||'%' 试试吧
碧水幽幽泉 2017-09-15
  • 打赏
  • 举报
回复
一些Tableau开发总结
1.占比: 相应度量字段上,添加表计算
计算类型选择"总额百分比",值汇总范围选择"表(向下)"

可参考:各专业公司T+0产品客户情况统计及分析-注册时长(表格)

2.面积图中的注册时长最高点和最低点
(1)添加注册时长(月) (度量)
CUST_CNT_MONTH: {FIXED [客户注册时长(月)] : SUM([CUST_CNT])}

(2)添加最大值和最小值 (度量)
{EXCLUDE [客户注册时长(月)] : MAX({FIXED [客户注册时长(月)] : SUM([CUST_CNT])})}
{EXCLUDE [客户注册时长(月)] : MIN({FIXED [客户注册时长(月)] : SUM([CUST_CNT])})}

(3)添加计算字段,取最高点和最低点 (度量)
IF [CUST_CNT_MONTH] = [CUST_CNT_MAX] OR [CUST_CNT_MONTH] = [CUST_CNT_MIN]
THEN [CUST_CNT_MONTH] ELSE NULL END

(4)以计算字段为度量绘制一个图,选择"圆",然后点击双轴

可参考:各专业公司T+0产品客户情况统计及分析-注册时长(折线图)

3.分级别统计问题(以年龄分布为例说明)
(1)新增计算字段(维度)AGE_LEVEL(添加级别定义)
IF [AGE] < 18 THEN '<18'
ELSEIF [AGE] >= 18 AND [AGE] < 25 THEN '[18,25)'
ELSEIF [AGE] >= 25 AND [AGE] < 30 THEN '[25,30)'
ELSEIF [AGE] >= 30 AND [AGE] < 35 THEN '[30,35)'
ELSEIF [AGE] >= 35 AND [AGE] < 40 THEN '[35,40)'
ELSEIF [AGE] >= 40 AND [AGE] < 45 THEN '[40,45)'
ELSE '>=45' END

(2)添加各年龄客户数量计算字段(度量)
CUST_CNT_AGE: CUS_CNT

(3)对CUST_CNT_AGE添加表计算: 获取年龄层占比
计算类型选择"总额百分比",值汇总范围选择"表(向下)"

(4)统计各年龄阶段人数的数量 度量)
CUST_CNT_TOTAL: {EXCLUDE [AGE_LEVEL] : SUM([CUST_CNT])}

(5)添加男性/女性人数计算字段(度量)
CUST_CNT_FEMALE: IF [GENDER] = '女' THEN [CUST_CNT] ELSE 0 END
CUST_CNT_MALE: IF [GENDER] = '男' THEN [CUST_CNT] ELSE 0 END

(6)新增两个度量计算字段(度量),分别统计各年龄层男性/女性人数
CUST_CNT_AGE_FEMALE:{FIXED [AGE_LEVEL] : SUM([CUST_CNT_FEMALE])}
CUST_CNT_AGE_MALE:{FIXED [AGE_LEVEL] : SUM([CUST_CNT_MALE])}

(7)新增两个度量计算字段(添加男性/女性人数占比)
CUST_CNT_FEMALE_PERCENT: [CUST_CNT_AGE_FEMALE] / [CUST_CNT_TOTAL]
CUST_CNT_MALE_PERCENT: [CUST_CNT_AGE_MALE] / [CUST_CNT_TOTAL]

可参考:各专业公司T+0产品客户情况统计及分析-注册时长(折线图)

--DATETRUNC的使用
昨日: DATETRUNC('day',NOW()-1)
昨日数据: [统计日期] < DATETRUNC('day',NOW())
最大日期: [统计日期] < DATETRUNC('day',{FIEXD: MAX(统计日期)})
选择日期: [统计日期] = [数据日期CA01_3]

--NOW() 年月日+时分秒
--TODAY() 年月日

--添加{}使聚合函数和非聚合函数匹配: [统计日期] = {MAX([统计日期])}

--默认取最新日期
IF [统计日期] = {MAX([统计日期])} THEN 'Last Date'
ELSE
STR(DATEPART('year',[统计日期]))+'-'+STR(DATEPART('month',[统计日期]))+'-'+STR(DATEPART('day',[统计日期]))
END

--默认取最新日期2
创建计算字段1:{FIXED [Time]: max(year([Date])*100+month([Date]))} --[Month]
创建计算字段2:year([Date])*100+month([Date]) --[latest month]
创建字符串参数: [是否最新日期],默认值为'否'
创建计算字段3: [是否最新日期] = "否" or [Month] = [latest month]
然后将[统计日期]和[是否最新日期] 拖到筛选器中.

--合计值排序:
IF [迁徙路径] = '合计' THEN 1 ELSE 0 END; 接着编辑[迁徙路径]的排序规则,下来选择"合计值排序"字段,点击"最小值"

--负值突出显示:
IF LEFT([字段],1) = '-' THEN 1 ELSE 0 END 接着把"负值突出显示"字段拖放到颜色,编辑显示目标颜色即可
重复值高亮显示: IF { FIEXD [计算字段]: COUNT([计算字段])} > 1 THEN 1 ELSE 0 END

--负值去掉-,换成()显示:
IF LEFT([字段],1) = '-' THEN '('+REPLACE([字段],'-','')+')' ELSE [字段] END 替换掉之前的字段
碧水幽幽泉 2017-09-15
  • 打赏
  • 举报
回复
--如果统计一天24小时每个小时的数据量
--创建测试表
create table hour_test (add_hour date);
--循环插入测试数据
declare n number;
begin
n:=0;
while n<50000 loop
n :=n+1;
insert into hour_test
select * from (
select rownum rn,to_date('2017-01-01', 'yyyy-mm-dd hh:mi:ss')+ rownum/24 add_hour
from dual
connect by rownum<25
) a
where a.rn =(select round(dbms_random.value(1,24)) from dual);
end loop;
commit;
end ;
--查询结果
select to_char(add_hour,'hh24') hour,count(*) n from hour_test
group by to_char(add_hour,'hh24')
order by to_char(add_hour,'hh24');
碧水幽幽泉 2017-09-15
  • 打赏
  • 举报
回复
Oracle中一个列转行例子
-- a 1|2|3
转成:
a 1
a 2
a 3
create table test( a1 varchar2(10),b1 varchar2(10));
insert into test(a1,b1) values('a','1,2,3');
commit;

--方法1`
select a1,regexp_substr(b1,'[^,]+',1,level)
from test
connect by level <= length(b1)-length(replace(b1,','))+1
--方法2
select a1,regexp_substr(b1,'[^,]+',1,level)
from test
connect by level <=length(regexp_replace(b1,'[^,]+')) +1
--方法3
select a1,regexp_substr(b1,'[^,]+',1,level)
from test
connect by level <=regexp_count(b1,',')+1
qq_34985795 2017-08-17
  • 打赏
  • 举报
回复
同问,我也遇到了这个问题。楼主找到方法了吗?
Ant_of_struggle 2017-08-02
  • 打赏
  • 举报
回复 1
LIKE '%'||$P{param}||'%' 我是这样写的可以
ghx287524027 2017-07-09
  • 打赏
  • 举报
回复
like '%'+$P{param}+'%'

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧