脚本:  select ql_state,
               sum(case
                     when ql_kind = 'SP' then
                      1
                     else
                      0
                   end),
               sum(case
                     when ql_kind = 'CF' then
                      1
                     else
                      0
                   end)
          from ql_inf
         group by ql_state结果:QL_STATE        SP       CF
          H            3       537
          A            64      5943
请问 脚本中的红色的数字是什么意思啊?是不是当查询ql_inf这张表时  如果ql_kind='CF'或ql_kind='SP' 时 就吧1或0付给它们?谢谢各位!!!

解决方案 »

  1.   

    case when 的结果为1或0 然后sum求和
      

  2.   

    select ql_state,
      sum(case when ql_kind = 'SP' then 1  else  0  end),
      sum(case when ql_kind = 'CF' then 1  else  0  end)
    from ql_inf
    group by ql_state
    这是典型的行列转换.
      

  3.   

    oracle还可以用decode.
    参考如下(把下面的max换成sum即可.):
    /*
    标题:静态行列转换
    作者:爱新觉罗.毓华 
    时间:2008-05-05
    地点:广东深圳
    *//*   
    col1         col2         col3 
    A               x                   1 
    A               y                   2 
    A               z                   3 
    B               x                   2 
    B               y                   1 
    B               z                   1 转换为col1          x         y       z 
    A             1         2       3 
    B             2         1       1 
    */create table tb(col1 varchar2(10) , col2 varchar2(10) , col3 varchar2(10))
    insert into tb values('A' , 'x' , '1') 
    insert into tb values('A' , 'y' , '2') 
    insert into tb values('A' , 'z' , '3') 
    insert into tb values('B' , 'x' , '2') 
    insert into tb values('B' , 'y' , '1') 
    insert into tb values('B' , 'z' , '1')--1
    select col1,
      max(case col2 when 'x' then col3 else '' end) x,
      max(case col2 when 'y' then col3 else '' end) y,
      max(case col2 when 'z' then col3 else '' end) z
    from tb
    group by col1--2
    select col1 ,
      max(decode(col2 , 'x' , col3)) x,
      max(decode(col2 , 'y' , col3)) y,
      max(decode(col2 , 'z' , col3)) z
    from tb
    group by col1
      
    drop table tb/*
    COL1       X          Y          Z         
    ---------- ---------- ---------- ----------
    A          1          2          3         
    B          2          1          1         
    2 rows selected
    */ 
      

  4.   


    ql_kind='CF'或ql_kind='SP'意思就是按ql_state分组 就是统计结果集中ql_kind='CF' 有多少行,ql_kind='SP'的有多少行
      

  5.   

    是不是当查询该表时 每次满足条件时时 就赋值为1 否则就赋值为0 然后SUM求和?