大虾们好,我现在碰到这样的问题:
在数据库的同一张表里,同时存着主单和副单,主单就就它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,这该怎么实现呢?
在数据库的同一张表里,同时存着主单和副单,主单就就它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,这该怎么实现呢?
重写例子h单的内容是:no H1
m_no ss
h_no
ish 1m单的内容是:no M1
m_no
h_no ss
ish 0这样应该清楚了吧
你描述的需求 不太明白
--给你个例子 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
就是这段伪代码该怎么正确表达我不是很清楚呢,不知道谁能教教我
另外一半的问题是,怎么在select里再嵌入一个select有人知道吗?
select no, decode(ish,0,no,1,(select no from sheet1 where this.mno=hno))as master from sheet1有解吗?求教,急
上面sql可以直接运行!
改成你自己的就可以
--是这样的吗?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
select no, decode(ish,0,no,1,(select b.no from sheet1 b where b.mno=a.hno))as master from sheet1 a