decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,預設值)
1)比較大小
select decode(sign(變數1-變數2),-1,變數1,變數2) from dual;
sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1
2)select sum(decode(性別,男,1,0)),sum(decode(性別,女,1,0)) from 表
3)order by對字元列進行特定的排序
例:表table_subject,有subject_name列。要求按照:語、數、外的順序進行排序。
select * from table_subject order by decode(subject_name, '語文', 1, '數學', 2, , ' 外語',3)
desc(從大到小) asc(從小到大)
select
*from
(select
*from
table
where id =
'123'
order
)where
rounum =
1
1)基本
select
name,
(case
when score <
60then
'不及格'
when score >=
60then
'及格'
when score is
null
then
'缺考'
else
'異常'
end)as
"remark"
from
table
then 和 else 資料型別要一致,注意是空為 is null
2)布林型別判斷
case
when condition then result
[when..
.then..
.]else result
end
condition是乙個返回布林型別的表示式,
如果表示式返回true,則整個函式返回相應result的值,
如果表示式皆為false,則返回else後result的值,
如果省略了else子句,則返回null。
3)求和
select
sum(
case
when score >=
60then
1else
0end
)as 「有加一」,
sum(
case
when score <
60and *** =
'女'then
1else
0end)as
"可以在when中加and"
from
table
4)行轉列,並配合聚合函式做統計e_code
e_value
e_type
北京28.500北京
23.511北京
28.122北京
12.300北京
15.461上海
18.880上海
16.661上海
19.990上海
10.05
0
select
e_code,
sum(
case
when e_type =
0then e_value else
0end
)as water_energy,
--水耗
sum(
case
when e_type =
1then e_value else
0end
)as ele_energy,
--電耗
sum(
case
when e_type =
2then e_value else
0end
)as heat_energy--熱耗
from
thtf_energy_test
group
by e_code
5) case when 中使子查詢min 上面為準
max 下面為準
group by 為刪除重複資料的條件
1.為規範sql語句加別名使用as,需要注意的是別名不加「」 所得字段值為全部大寫形式。
2.left join table t on t.id = 『123』
Oracle 樹查詢及相關函式
oracle樹查詢的最重要的就是select.start with.connect by prior 語法了。依託於該語法,我們可以將乙個表形結構的中以樹的順序列出來。parent id儲存的是上級id,如果是頂級父節點,該parent id為0 quote 表中最好別有null記錄,這會引起全文掃...
oracle函式相關
1.nvl oracle的nvl函式的用法 通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值 select nvl sum t.dwxhl 1 from tb jhde t where zydm 1 這裡關心的nvl的用法,nvl arg,value 代表如果前面的arg的值...
oracle相關函式
大寫的ps oracle儲存過程測試進不去解決方案 重新編譯 trunc sysdate,d 1 表示今天所在周的周一的年月日,如今天是2016.04.21周四,則trunc sysdate,d 1表示2016.04.18周一 select trunc sysdate from dual case ...