原始数据表:
目标数据表:

解决方案 »

  1.   

    http://topic.csdn.net/u/20090623/15/83fd893b-1ca1-42aa-932f-d7abb284a55e.html?r=57911518实在不行 手打吧。。
      

  2.   

    日期           所属部门     使用单位     在线状态
    2012-02-12     西山分局     河口派出所   不在线
    2012-02-12     西山分局     江山派出所   在线
    2012-02-12     呈贡分局     派出所1      不在线
    2012-02-12     呈贡分局     派出所2      不在线
    2012-02-12     呈贡分局     派出所3      不在线目标:
    所属部门       终端总数     在线数量     不在线数量
    西山分局          2              1          1
    呈贡分局          3              0          3求SQL语句
      

  3.   


    select 所属部门,count(所属部门) 终端总数,
           sum(decode(在线状态,'在线',1,0)) 在线数量,
           sum(decode(在线状态,'不在线',1,0)) 不在线数量
    from tb1 
    group by 所属部门
      

  4.   

    SQL> show user
    USER 为 "SCOTT"SQL> ed
    已写入 file afiedt.buf  1  CREATE TABLE tbs(
      2     日期 DATE,
      3     所属部门 VARCHAR2(20),
      4     使用单位 VARCHAR2(20),
      5     在线状态 VARCHAR2(10)
      6* )
    SQL> /表已创建。SQL> @c:\sql.sql已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。SQL> select * from tbs;日期           所属部门             使用单位             在线状态
    -------------- -------------------- -------------------- ----------
    12-2月 -12     西山分局             河口派出所           不在线
    12-2月 -12     西山分局             江山派出所           在线
    12-2月 -12     呈贡分局             派出所1              不在线
    12-2月 -12     呈贡分局             派出所2              不在线
    12-2月 -12     呈贡分局             派出所3              不在线SQL> ed
    已写入 file afiedt.buf  1  select 所属部门,count(所属部门) 终端总数,
      2         sum(decode(在线状态,'在线',1,0)) 在线数量,
      3         sum(decode(在线状态,'不在线',1,0)) 不在线数量
      4  from tbs
      5* group by 所属部门
      6  /所属部门               终端总数   在线数量 不在线数量
    -------------------- ---------- ---------- ----------
    西山分局                      2          1          1
    呈贡分局                      3          0          3SQL>
      

  5.   

      1  select 所属部门,count(所属部门) 终端总数,
      2         sum(decode(在线状态,'在线',1,0)) 在线数量,
      3         count(所属部门)-sum(decode(在线状态,'在线',1,0)) 不在线数量
      4  from tbs
      5* group by 所属部门
      6  /
      

  6.   

    不知源表数据情况,可能还要加上日期限制吧,不然统计的数量可能不对。
    select 所属部门,count(所属部门) 终端总数,
           sum(decode(在线状态,'在线',1,0)) 在线数量,
           sum(decode(在线状态,'不在线',1,0)) 不在线数量
    from tb1 
    where 日期=to_date('20120212','yyyymmdd')
    group by 所属部门