select
(
declare
pm_name varchar(20);begin
select name into pm_name from tblsex where type=u.type
dbms_output.put_line(pm_name); if pm_name = '男' then
select name into pm_name from tblsex where type=u.type
else
--输出'女'
end if;end;
) xb
,
u.*
from users u这条SQL有错,如何改为正确?
(
declare
pm_name varchar(20);begin
select name into pm_name from tblsex where type=u.type
dbms_output.put_line(pm_name); if pm_name = '男' then
select name into pm_name from tblsex where type=u.type
else
--输出'女'
end if;end;
) xb
,
u.*
from users u这条SQL有错,如何改为正确?
解决方案 »
- oracle 数据库无法启动
- o9i数据库创建问题,请高手指点一下.
- select sysdate as "当前"时间" from dual 如何解决?
- 怎麽顯示星期幾
- 一个的oracle小问题!insert into语句不能插入数据
- 一个简单的问题 oracle not available
- beckhambobo帮帮忙,(select ....)as A形式的语句怎样写?
- 高手很容易解决的问题,asp调用存储过程,代码很短的。解决立码给100分
- 谁能提供ORACLE8.1.5版本的下载地址????!!!
- Oracle中易错的知识点
- 菜鸟又来求助了,关于cast的问题
- 求解开始和结束时间之间所有季度
(
case
when t.jqly is not null then '加签'
when t.jqly is null then (
case
when not exists(select gzdmc form gwgzd where gwid=t.gwid) then '拟制'
else (select gzdmc form gwgzd where gwid=t.gwid)
end
)
end
) gzdmc,
t.*
from (select * from gwxxb)
where rownum<=5 order by rownum asc
--select gzdmc form gwgzd where gwid=t.gwid 在这句里有错的,有可能查出多行数据,但我只想取第一行数据,如何改进?
SELECT (CASE
WHEN T.JQLY IS NOT NULL THEN
'加签'
WHEN T.JQLY IS NULL THEN
(CASE
WHEN NOT EXISTS (SELECT GZDMC FORM GWGZD WHERE GWID = T.GWID) THEN
'拟制'
ELSE
(SELECT GZDMC FORM GWGZD WHERE GWID = T.GWID AND ROWNUM = 1)
END)
END) GZDMC,
T.*
FROM GWXXB T
WHERE ROWNUM <= 5
ORDER BY ROWNUM ASC
tx.name='女' end case
from tblsex tx,users u where tx.type=u.type
这句SELECT GZDMC FORM GWGZD WHERE GWID = T.GWID AND ROWNUM = 1
要排序后再取第一行数据
select
(
case
when t.jqly is not null then '加签'
when t.jqly is null then (
case
when not exists(select gzdmc form gwgzd where gwid=t.gwid) then '拟制'
else (select gzdmc form gwgzd where gwid=t.gwid where rownum=1 order by gzdmc)
end
)
end
) gzdmc,
t.*
from (select * from gwxxb) t
where rownum<=5 order by rownum asc
仅供参考。语句可以不会报错,要获取第一行数据,就得看 order by 后的字段是否能够达到要求
select
(
case
when t.jqly is not null then '加签'
when t.jqly is null then (
case
when not exists(select gzdmc form gwgzd where gwid=t.gwid) then '拟制'
else (select gzdmc form gwgzd where gwid=t.gwid and rownum=1 order by gzdmc)
end
)
end
) gzdmc,
t.*
from (select * from gwxxb) t
where rownum<=5 order by rownum asc
在case when 里边不加排序,而你那句也没排序就取了第一行
SELECT DECODE(T.JQLY, NULL, NVL(G.GZDMC, '拟制'), '加签') GZDMC, T.*
FROM GWXXB T
LEFT JOIN (SELECT ROW_NUMBER() OVER(PARTITION BY GWID ORDER BY GZDMC) ROW_,
GWID,
GZDMC
FROM GWGZD) G
ON T.GWID = G.T.GWID
AND G.ROW_ = 1
WHERE ROWNUM <= 5
ORDER BY ROWNUM ASC;