在ireport中怎么进行模糊查询,sql语句怎么写??

解决方案 »

  1.   

    like '%'+$P{param}+'%'
      

  2.   

    LIKE '%'||$P{param}||'%' 我是这样写的可以
      

  3.   

    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
      

  4.   

    --如果统计一天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');
      

  5.   

    一些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  替换掉之前的字段
      

  6.   

    like '%'||$P{param}||'%' 试试吧