表结构如下:(表名table1)
id    ordid       useid(方式)  twouseid 
  1    103           1              1
  2    104           2              3
  3    103           2              1
  4    103           3              2要求统计结果输出如下
ordid  useid(该机构所有方式的记录数) useid为1的记录数 useid为2的记录数 useid为2的记录数  
103     ?                                   ?             ?             ?
104     ?                                   ?             ?             ?twouseid为1的记录数 twouseid为2的记录数  twouseid为3的记录数
?                        ?                     ?
?                        ?                     ?
如果ordid的某种方式的记录数没有记录则为0不仅仅是把行转化为列就可以了~还有个统计的问题,要统计出记录的条数请教如何写sql语句?谢谢指教 万分感谢我头都想破了都想不到怎么做~请大家帮忙~

解决方案 »

  1.   

    select count(*),sum(decode(useid,1,1,0)) useid1,
           sum(decode(useid,2,1,0)) useid2,
           sum(decode(useid,3,1,0)) useid3,
           sum(decode(twouseid,1,1,0)) twouseid1,
           sum(decode(twouseid,2,1,0)) twouseid2,
           sum(decode(twouseid,3,1,0)) twouseid3
    from table1 
    group by ordid
      

  2.   

    SQL> select * from c;C1         C2         C3
    ---------- ---------- ----------
    A          1          103
    A          1          103
    C          3          104
    D          1          104
    B          4          103
    B          2          104
    C          2          104
    C          2          103
    A          2          103
    A          4          10310 rows selectedExecuted in 0.031 secondsSQL> C3             SUM(A)  SUM(C2_1)  SUM(C2_2)  SUM(C2_3)  SUM(C2_4)  SUM(C1_A)  SUM(C1_B)  SUM(C1_C)  SUM(C1_D)  SUM(C1_E)
    ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
    103                 6          2          2          0          2          4          1          1          0          0
    104                 4          1          2          1          0          0          1          2          1          0Executed in 0.016 secondsSQL>
      

  3.   

    select c3,sum(A),sum(C2_1),sum(C2_2),sum(C2_3),sum(C2_4),
    sum(C1_A),sum(C1_B),sum(C1_C),sum(C1_D),sum(C1_E) from
    (select c3,sum(1) A,
    decode(c2,'1',sum(1),0) "C2_1",
    decode(c2,'2',sum(1),0) "C2_2",
    decode(c2,'3',sum(1),0) "C2_3",
    decode(c2,'4',sum(1),0) "C2_4",
    decode(c1,'A',sum(1),0) "C1_A",
    decode(c1,'B',sum(1),0) "C1_B",
    decode(c1,'C',sum(1),0) "C1_C",
    decode(c1,'D',sum(1),0) "C1_D",
    decode(c1,'E',sum(1),0) "C1_E"
    from c 
    group by c3,c2,c1
    )
    group by c3;
      

  4.   

    如果方式一和方式二的数目是固定的,这二种方法都能行的通,现在关键是方式二和方式一的数目有可能是浮动的~也就是你并不知道方式一和方式二的具体数目!那些SQL语句要怎么改请二位指教!
    谢谢!一解决问题我马上给分封贴了,呵呵,谢谢二位高手了
      

  5.   

    其实现在我在二位的帮助下用动态SQL已经实现我的功能了,不过我想还有没有更好的办法,直接一个SQL语句就搞定~