数据机构这样的
供应商名称 任务名称 任务状态
三星 A start
三星 B start
三星 C start
三星 D complete
联想 A complete
联想 B complete
联想 C start
联想 D start要求用一条语句查询各个供应商总共任务数,开始(start)任务数,提交任务数不知道能不能实现

解决方案 »

  1.   


    select 供应商名称,sum(1),sum(case when 任务状态 = 'start' then 1 else 0 end ), sum(case when 任务状态 = 'complete' then 1 else 0 end )
    from your_table
    group by  供应商名称
      

  2.   

    SELECT 供应商名称,Count(任务名称) 总共任务数,
    Count(Decode(任务状态,'start' ,1)) 开始(start)任务数,
    Count(Decode(任务状态,'complete' ,1)) 提交任务数
    FROM 表
    GROUP BY  供应商名称
      

  3.   

    select a.供应商名称,a.任务状态 ,count(1)over (group by 供应商名称,任务状态 ) rn,(select count(1) from table group by 供应商名称 )任务总数 from table_name a
      

  4.   

    修改下,用sum还好点:SELECT 供应商名称,Count(任务名称) 总共任务数,
    sum(Decode(任务状态,'start' ,1)) 开始(start)任务数,
    sum(Decode(任务状态,'complete' ,1)) 提交任务数
    FROM 表
    GROUP BY 供应商名称
      

  5.   

    WITH a AS(
    SELECT '三星' NAME1,'A' NAME2,'start' STATUS FROM dual
    UNION ALL
    SELECT '三星' ,'B' ,'start'  FROM dual
    UNION ALL
    SELECT '三星' ,'C' ,'start'  FROM dual
    UNION ALL
    SELECT '三星' ,'D' ,'complete'  FROM dual
    UNION ALL
    SELECT '联想' ,'A' ,'complete'  FROM dual
    UNION ALL
    SELECT '联想' ,'B' ,'complete'  FROM dual
    UNION ALL
    SELECT '联想' ,'C' ,'start'  FROM dual
    UNION ALL
    SELECT '联想' ,'D' ,'start'  FROM dual
    )
    SELECT NAME1 供应商名称,Count(NAME2) 总共任务数,
    Count(Decode(STATUS,'start' ,1)) 开始任务数,
    Count(Decode(STATUS,'complete' ,1)) 提交任务数
    FROM A
    GROUP BY  NAME1
    结果:
    供应商名称  总共任务数  开始任务数  提交任务数
    三星 4 3 1
    联想 4 2 2