大虾们好,我现在碰到这样的问题:
在数据库的同一张表里,同时存着主单和副单,主单就就它m单,no是M打头;副单就叫它h单,no是H打头;例子如下no  m_no  h_no  ish
H1  ss          1
M1        ss    0现在我希望输出表单的no,并且在ish为1的情况下,根据m_no和n_no的匹配性输出H1对应的M1,为0的情况下直接再输出一次M1,这该怎么实现呢?

解决方案 »

  1.   

    啊,发现出来的样子跟编辑状态不一样啊
    重写例子h单的内容是:no       H1
    m_no     ss
    h_no
    ish      1m单的内容是:no       M1
    m_no     
    h_no     ss
    ish      0这样应该清楚了吧
     
      

  2.   

    用DECODE吧~和IF ELSE差不多~具体用法BAIDU一下
      

  3.   

    查询语句里可以用case when 
    你描述的需求 不太明白
    --给你个例子  1  select sal,
      2  (case when sal>4000 then 'high' when sal>2000 then 'middle' else 'little' end)
      3* from emp
    SQL> /       SAL (CASEW
    ---------- ------
           800 little
          1600 little
          1250 little
          2975 middle
          1250 little
          2850 middle
          2450 middle
          3000 middle
          5000 high
          1500 little
          1100 little       SAL (CASEW
    ---------- ------
           950 little
          3000 middle
          1300 little
      

  4.   

    就是想写成select no, (if ish=1 then no; else no=(where m_no=h_no)) Mno from sheet1
    就是这段伪代码该怎么正确表达我不是很清楚呢,不知道谁能教教我
      

  5.   

    就是我需要输出sheet1里的no,并且当该记录是h单是,根据m_no和h_no的一一对应关系,再输出该h单所对应的m单的no这么说能明白吗?好像真的很复杂啊,汗
      

  6.   

    看了下decode和case when,这个能解决一半的问题
    另外一半的问题是,怎么在select里再嵌入一个select有人知道吗?
      

  7.   

    可以啊!select中可以再嵌套啊,你想在哪里嵌套?
      

  8.   

    我想在decode语句中嵌套
    select no, decode(ish,0,no,1,(select no from sheet1 where this.mno=hno))as master from sheet1有解吗?求教,急
      

  9.   

    或者可不可以先从sheet1中挑出一些字段生成一张视图,然后在该视图根据字段相等left join sheet1?这样可以吗?
      

  10.   

    select decode(DUMMY, 'X',(SELECT MAX(DUMMY) FROM DUAL), (SELECT MIN(DUMMY) FROM DUAL)) from dual;
    上面sql可以直接运行!
      

  11.   

    select decode(DUMMY, 'X',(SELECT MAX(DUMMY) FROM DUAL WHERE DUMMY = 'X'), 1,(SELECT MIN(DUMMY) FROM DUAL)) from dual;
    改成你自己的就可以
      

  12.   


    --是这样的吗?WITH sheet1 AS(
    SELECT 'H1' no,NULL mno, 'ss' hno,1 ish FROM dual
    UNION ALL
    SELECT 'M1','ss',NULL,0 FROM dual
    )
    select no, decode(ish,0,no,1,(select no from sheet1 where mno=a.hno))as master from sheet1 a
    NO  MASTER
    -------------
    H1   M1
    M1   M1
      

  13.   


    select no, decode(ish,0,no,1,(select b.no from sheet1 b where b.mno=a.hno))as master from sheet1 a