1樓:想發錢的乞丐
1、select ename,
decode(sign(sal - 1000), -1, 0,
decode(sign(sal - 2000), -1, sal * 0.1,
decode(sign(sal - 3000), -1, sal * 0.15, sal * 0.2))), sal
from emp
2、select ename,
(case
when sal < 1000 then 0
when sal >= 1000 and sal < 2000 then sal * 0.1
when sal >= 2000 and sal < 3000 then sal * 0.15
else sal * 0.2
end),sal
from emp;
第一種寫法的錯誤:decode用法錯誤,括號內應該是表示式、值、結果而不是列、判斷列。
第二種寫法的錯誤:格式應該是這樣 case when 表示式 then end,或是這樣 case 表示式 when 值 then 結果 end。
2樓:bluebird白玉
首先來看第一個decode函式,這個函式起基本語法是
decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值);
並不能比較大小
這裡可以在引入一個函式sign,sign是取數字符號的(select (-10) from dual;返回的是-1)
小於零返回-1,等於0返回0,大於0返回1
我們可以修改下你這個語句為:
select ename 姓名,
decode(sign(sal-3000),1,(sal*0.2),0,(sal*0.2),-1,
decode(sign(sal-2000),1,(sal*0.15),0,(sal*0.15),-1,
decode(sign(sal-1000),1,(sal*0.1),0,(sal*0.1),-1,0)))應繳稅款
from emp;
再看第二個,這裡要用case搜尋函式
select ename 姓名,
case
when sal<1000 then 0
when sal>=1000 and sal<2000 then sal*0.1
when sal>=2000 and sal<3000 then sal*0.15
else sal*0.2
end 應交稅款
from emp;
關於oracle資料庫匯出問題,錯誤如下.
3樓:匿名使用者
樓主的問題我也遇到過,沒有解決,網上有解決方法,都是很麻煩,exp匯出最好是同版本的,不然就會報錯,或者你可以做一個dblink,直接連線到目標資料庫,將表匯入到現有資料庫。
4樓:
貼出你執行的命令 低版本的exp/imp可以連線到高版本(或同版本)的資料庫伺服器,但高版本的exp/imp不能連線到低版本的資料庫伺服器。
5樓:匿名使用者
版本不同吧,換成10g的試試
6樓:匿名使用者
改用10g的客戶端去導
sql資料庫和oracle資料庫string型別欄位用orderby排序分別是根據什麼排序的啊
首先說明下oracle中沒有string型別,而是varchar型別。order by 的順序是assic 讀作 阿斯科馬 碼錶中 字元 列進行排序的。解釋 一般會根據字串的首字母 大些字母 小寫字母 特殊字元 數字。如果首位相同繼續排列第二位,直到不同的位。sql資料和oracle資料庫都沒有st...
Oracle資料庫如何匯出
資料匯出具體如下 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中。將資料庫中system使用者與sys使用者的表匯出。將資料庫中的表table1 table2匯出。將資料庫中的表table1中的欄位filed1以 00 打頭的資料匯出。將d d...
oracle資料庫和資料庫的關係是什麼?下面是問題
oracle資料庫,分為兩個部分 1 軟體部分。這部分你說的沒錯,確實是一個應用軟體。就好象你的word一樣,word本身是一個應用程式。2 資料庫部分,資料庫是用軟體建立的,按照一定規則儲存和處理資料的載體。再舉例就好象你的word文擋。你的word文擋是利用word建立的。這裡的資料庫確實是利用...