select HINCD,sum(decode(rownum,1,jsksu,0)),sum(decode(rownum,2,0,jsksu)) from ns  where  a.hincd='1-771-574-21' group by hincd;

解决方案 »

  1.   

    to bzszp(SongZip):
    你的结果不是我要的那种,我的意思是:9是优的数量;8是差的数量。我要他显示在同一行!其实表里还有一个字段(nsrisu)是表示是”优“还是”差“。
      

  2.   

    select HINCD,JSKSU as jsksu_1,JSKSU as jsksu_2 where hincd='1-771-574-21'
      

  3.   

    HINCD                    NSRIYU      JSKSU
    -------------------- ---------- ----------
    1-771-574-21                 13          9
    1-771-574-21                  0          8现在我想select出来如下:(相同代码的在同一行)HINCD                     JSKSU      JSKSU
    -------------------- ---------- ----------
    1-771-574-21                  9          8
    ========================================================
    select distinct HINCD ,Max(JSKSU) JSKSU,Min(JSKSU) JSKSU from 表 group by HINCD
      

  4.   

    如果要指定是 : 1-771-574-21  的话,可以加上一条 Whereselect distinct HINCD ,Max(JSKSU) JSKSU,Min(JSKSU) JSKSU 
    from 表 
    where HINCD = '1-771-574-21'
    group by HINCD
      

  5.   

    你们发现没有:
    表temp里面本来就有两行1-771-574-21,9与1-771-574-21,8。我们用的语句:
    select a.hincd,a.jsksu,b.jsksu from ns a,ns b where a.hincd=b.hincd and a.hincd='1-771-574-21'
    本身就会返回两行!你们的结果都不是我想要的结果,我想让同种编号的两种情况都反映在同一记录上!就是:
    1-771-574-21,8,9
    里面并不存在最大值与最小值的问题!
      

  6.   

    这应该纵表变横表的问题了。
    bzszp的答案中sum(decode(rownum,2,0,jsksu)) 应该改成sum(decode(rownum,2,jsksu,0))吧
      

  7.   

    呵呵,楼上发现了
    select HINCD,sum(decode(rownum,1,jsksu,0)),sum(decode(rownum,2,jsksu,0)) from ns  where  a.hincd='1-771-574-21' group by hincd;
    ok!
      

  8.   

    楼上:
    我例子里只有两条记录,其实里面有好几万条啊。你们的做法只是把两条记录合并,并没有判断只有相同代码(HINCD)才能合并,另外里面还有很多相同代码但情况不同的记录!
    我要求相同代码的记录只出现一次,把它出现不同情况的数量显示在统一条记录上,如:
    HINCD  NSRIYU JSKSU
    ----------------------------------
    1-771-574-21 13 9
    1-333-333-01 11 8
    1-444-444-01 11 6
    1-444-444-01 13 6
    1-771-574-21 11 8
    1-333-333-01 13 4其中:NSRIYU表示“优”“差”,Jsksu表示数量。我想得到如下的结果:
    HINCD  jsksu JSKSU
    ------------------------------
    1-771-574-21 9 8
    1-333-333-01 8 4
    1-444-444-01 6 6
      

  9.   

    如果能确保每个HINCD都有两个则可以
    select HINCD,sum(decode(MOD(rownum,2),1,jsksu,0)),sum(decode(MOD(rownum,2),0,jsksu,0)) from (SELECT * FROM ns ORDER BY HINCD) T  where  group by hincd;
    试试看
      

  10.   

    如果能确保每个HINCD都有两个则可以
    select HINCD,sum(decode(MOD(rownum,2),1,jsksu,0)),sum(decode(MOD(rownum,2),0,jsksu,0)) from (SELECT * FROM ns ORDER BY HINCD) T  where  group by hincd;
    试试看
    我例子里只有两条记录,其实里面有好几万条啊。你们的做法只是把两条记录合并,并没有判断只有相同代码(HINCD)才能合并,另外里面还有很多相同代码但情况不同的记录!
    我要求相同代码的记录只出现一次,把它出现不同情况的数量显示在统一条记录上,如:
    HINCD  NSRIYU JSKSU
    ----------------------------------
    1-771-574-21 13 9
    1-333-333-01 11 8
    1-444-444-01 11 6
    1-444-444-01 13 6
    1-771-574-21 11 8
    1-333-333-01 13 4其中:NSRIYU表示“优”“差”,Jsksu表示数量。我想得到如下的结果:
    HINCD  jsksu JSKSU
    ------------------------------
    1-771-574-21 9 8
    1-333-333-01 8 4
    1-444-444-01 6 6
      

  11.   

    很难保证,有的只有一行!有的多于三行,你的语句能查询出来,但中间会隔一行!如:HINCD  NSRIYU JSKSU
    ----------------------------------
    1-771-574-21 13 9
    1-333-333-01 11 8
    1-771-574-21 10 9  //多了一行
    1-444-444-01 11 6
    1-444-444-01 13 6
    1-771-574-21 11 8
    1-333-333-01 13 4
    现在想让nsriyu为11,13的数量加在一起放在第一个nsriyu里,nsriyu为10的数量放在第二个nsriyu里。如:HINCD  jsksu JSKSU
    ----------------------------------
    1-771-574-21 17 9
    1-333-333-01 12 空这样是不是很难实现?
      

  12.   

    更正如下:
    你的语句能查询出来,但中间会隔一行。很难保证是两行,有的只有一行!有的多于三行
    如:
    HINCD  NSRIYU JSKSU
    ----------------------------------
    1-771-574-21 13 9
    1-333-333-01 11 8
    1-771-574-21 10 9  //多了一行
    1-444-444-01 11 6
    1-444-444-01 13 6
    1-771-574-21 11 8
    1-333-333-01 13 4
    现在想让nsriyu为11,13的数量加在一起放在第一个nsriyu里,nsriyu为10的数量放在第二个nsriyu里。如:HINCD  jsksu JSKSU
    ----------------------------------
    1-771-574-21 17 9
    1-333-333-01 12 空
    这样是不是很难实现?
      

  13.   

    To beckhambobo(beckham):
    行数不能确定是两行,可能是一行,可能是很多行!
      

  14.   

    SELECT HINCD ,SUM(DECODE (MODE(ROWNUM,2),1,H1,0)) ,SUM(DECODE (MODE(ROWNUM,2),1,H2,0))
    FROM (
    select      HINCD  JSKSU H1,JSKSU H2 FROM ns ORDER BY JSKSU )AS T
    GROUP BY JSKSU
      

  15.   

    to haif1978(Hello):你的方法管用,能解释一下MOD和DECODE的意思和使用方法吗?我没用过!
      

  16.   

    让nsriyu为11,13的数量加在一起放在第一个nsriyu里,nsriyu为10的数量放在第二个nsriyu里??楼主这种想法按什么规律?
      

  17.   

    HINCD  NSRIYU JSKSU
    ----------------------------------
    1-771-574-21 13 9
    1-333-333-01 11 8
    1-771-574-21 10 9  
    1-771-574-21 11 8
    1-333-333-01 13 4其实,13,11分别代表优秀、良,我把他放在一起是为了统一作为“好”处理,10、9分别代表较差,差握,我把他放在一起是为了统一作为“差”处理,我想要的结果:HINCD  jsksu JSKSU
    ----------------------------------
    1-771-574-21 17 9
    1-333-333-01 12 jsksu是13、11的总和,JSKSU是10的总和。
    相同代码不能出现两次。