有一个表A, 其中有三个字段是name、value和flag, 其中name和value为这个表的主键, 目前A表中有几条记录:
    name    value    flag
     a       X001      N
     a       X002      N
     a       X003      C  现在想做一个查询语句,统计一下相同的name和value的情况下,flag = N和flag = C的各有多少?
做成一条查询语句:
 flag = N   flag = C
     2         1在线等,立刻结贴

解决方案 »

  1.   

    矛盾:
    “其中name和value为这个表的主键”
    “统计一下相同的name和value的情况下”
      

  2.   

    select name,value,count(case when flag = 'N' then 1 end), count(case when flag = 'C' then 1 end) from a group by name,value;
      

  3.   

    不过按照给出的例子,恐怕group by name就可以了,因为name和value为主键时不可能出现name,value相同的情况。所以应该是:
    select name,count(case when flag = 'N' then 1 end), count(case when flag = 'C' then 1 end) from a group by name;
      

  4.   

    SELECT NAME,VALUE,SUM(DECODE(FLAG,'N',1,0)) N,SUM(DECODE(FLAG,'C',1,0)) C
    FROM A
    GROUP BY (NAME,VALUE);