groupid levelid text
A01      01     null 
A01      02     test
A01      03     testA02      01     test
A02      02     testA03      02     test
A03      03     nullA04      01     test
A04      02     null
A04      03     test
A04      04     test按groupid进行分组,每一组的text字段有一个为空,该组的status设置为0,如果都不为空,就设为1
想生成的结果如下
groupid   status
A01       0
A02       1
A03       0
A04       0谢谢!!

解决方案 »

  1.   

    -- TRY IT..
    SQL> SELECT GROUPID,
      2         MIN(DECODE(TEXT,NULL,0,1)) STATUS
      3    FROM TABLE_NAME TT
      4   GROUP BY GROUPID;GROUPID     STATUS
    ------- ----------
    A01              0
    A02              1
    A03              0
    A04              0
      

  2.   

    -- 2ND WAY:
    SQL> SELECT GROUPID,
      2         DECODE(SIGN(COUNT(1)-COUNT(TEXT)),1,0,1) STATUS
      3    FROM TABLE_NAME TT
      4   GROUP BY GROUPID;GROUPID     STATUS
    ------- ----------
    A01              0
    A02              1
    A03              0
    A04              0
      

  3.   

    select groupid, case when levelidcount=textcount then 1 else 0 end as status
    from
    (
    select groupid, count(levelid) levelidcount, count(text) textcount
    from tablename
    group by groupid
    )
      

  4.   


    --试一下:SELECT GROUPID, docode(count(DECODE(TEXT, NULL, 1, 0)), 0, 1, 0) STATUS
      FROM TABLE_NAME
     GROUP BY GROUPID;
      

  5.   

    SQL> SELECT GROUPID,
      2        MIN(DECODE(TEXT,NULL,0,1)) STATUS
      3    FROM TABLE_NAME TT
      4  GROUP BY GROUPID; 
    1楼正解。顶下
      

  6.   

    SQL> SELECT GROUPID, 
      2        MIN(DECODE(TEXT,NULL,0,1)) STATUS 
      3    FROM TABLE_NAME TT 
      4  GROUP BY GROUPID; 
    同意楼上说法,up
      

  7.   


    SELECT GROUPID, docode(count(DECODE(TEXT, NULL, 1, 0)), 0, 1, 0) STATUS
      FROM TABLE_NAME
     GROUP BY GROUPID;