CREATE??TABLE??info?(

大埔網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
users????varchar(100)
);
INSERT?INTO?info?VALUES('userA@userB@userC');
INSERT?INTO?info?VALUES('userB@userC@userD');
INSERT?INTO?info?VALUES('userC@userD@userE');
COLUMN?"用戶"?FORMAT?A15
SELECT
to_char(strvalue)?as?"用戶",
count(*)?AS?"用戶數(shù)"
FROM
info,
table(fn_split(?info.users,??'@'))
GROUP?BY
to_char(strvalue)
ORDER?BY
1;
用戶????????????????用戶數(shù)
---------------?----------
userA????????????????????1
userB????????????????????2
userC????????????????????3
userD????????????????????2
userE????????????????????1
上面這樣的效果, 是否滿足你的需求?
如果滿足的話, 你再往下看, 下面是 存儲過程的相關(guān)代碼
Oracle?需要首先在數(shù)據(jù)庫中,?創(chuàng)建好?類型?與?函數(shù)。
來實現(xiàn)一個??split?功能的處理。
--?定義一個對象類型.
CREATE?OR?REPLACE?TYPE?ty_row_str_split?as?object?(strValue?VARCHAR2?(4000));
/
--?定義一個?表/數(shù)組類型,?內(nèi)容是前面定義的那個對象.
CREATE?OR?REPLACE?TYPE?ty_tbl_str_split?IS?TABLE?OF?ty_row_str_split;
/
--------------------
--?字符分割函數(shù).
--?參數(shù)1:??被分割的源字符串
--?參數(shù)2:??用于拆分的字符串。
--------------------
CREATE?OR?REPLACE?FUNCTION?fn_split(
p_str???????IN?VARCHAR2,
p_delimiter?IN?VARCHAR2)
RETURN?ty_tbl_str_split?IS
j?????????INT?:=?0;
i?????????INT?:=?1;
--?被分割的源字符串?的長度.
len???????INT?:=?0;
--?分隔字符串的長度
len1??????INT?:=?0;
--?暫存的中間每一個單元的文本信息.
str???????VARCHAR2(4000);
--?預(yù)期返回結(jié)果.
str_split?ty_tbl_str_split?:=?ty_tbl_str_split();
BEGIN
--?被分割的源字符串?的長度.
len???:=?LENGTH(p_str);
--?分隔字符串的長度.
len1?:=?LENGTH(p_delimiter);
--?遍歷?被分割的源字符串.
WHILE?j??len?LOOP
--?在被分割的源字符串中,?查詢?分隔字符串.
j?:=?INSTR(p_str,?p_delimiter,?i);
IF?j?=?0?THEN
--?j=0?意味著沒有找到.
??--?可以理解為是查詢到最后一個單元了.
??--?設(shè)置?j?:=?len,?讓外部的循環(huán)處理可以結(jié)束了.
j??:=?len;
--?獲取最后一個單元的內(nèi)容.
str?:=?SUBSTR(p_str,?i);
--?結(jié)果追加一行.
str_split.EXTEND;
--?設(shè)置結(jié)果內(nèi)容.
str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);
IF?i?=?len?THEN
EXIT;
END?IF;
ELSE
--?如果在被分割的源字符串中,找到了?分隔字符串.
--?首先,獲取分割的內(nèi)容.
str?:=?SUBSTR(p_str,?i,?j?-?i);
--?然后設(shè)置索引,?下一次再查找的時候,從指定的索引位置開始(不是從0開始找了)
i?:=?j?+?len1;
--?結(jié)果追加一行.
str_split.EXTEND;
--?設(shè)置結(jié)果內(nèi)容.
str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);
END?IF;
END?LOOP;
RETURN?str_split;
END?fn_split;
/
函數(shù)創(chuàng)建完畢以后,可以開始做查詢的處理.
SQL?select?to_char(strvalue)?as?Value?from?table(fn_split('aa,bb,cc',','));
VALUE
-------------------------------------------------------------------------------
aa
bb
cc
你試試
Select o.org_desc || '_' || i.b_company x,
i.trade_time,
i.cust_name,
i.order_id,
sum(i.suc_amount) over(partition by o.org_desc || '_' || i.b_company),
i.plug_id,
i.b_company,
sum(i.suc_amount) over()
from t_ec_trade_info i, t_ec_org_mapping o
where i.b_company = o.org_biz_numb
and (i.b_company is not null)
order by i.b_company desc
不知道你所謂小計是什么意思,你可以看看下面的效果
select case when ID is null then '合計'
when CODE is null then '小計' else to_char(ID) end,
CODE,total
from (
select ID,CODE,sum(NUMBER) total from tttt
group by rollup(ID,CODE)
)
如果不是上面的意思 那么用開窗函數(shù)看看
SELECT ID,CODE,NUMBER
sum(NUMBER) OVER(partition by ID,CODE ORDER BY NUMBER ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM tttt;
試試這樣:
SELECT a.Deptcode 部門,
a.id ID,
a.NAME 姓名,
a.ITEM 物品名稱,
sum(a.QTY) 數(shù)量,
sum(a.COST) 金額
from itemlist A
where a.Fee_Date=TO_DATE('2015-3-29','YY-MM-DD')
AND a.FEE_DATE=TO_DATE('2015-3-30','YY-MM-DD')
AND a.QTY'0'
group by a.Deptcode ,
a.id ,
a.NAME ,
a.ITEM
order by 6 desc
Oracle Select語句的作用是在表單中查詢數(shù)據(jù),本文將為大家?guī)鞸elect語句的詳細(xì)用法介紹。
SELECT語句使用方法
在Oracle中,表是由列和行組成。 例如,示例數(shù)據(jù)庫中的customers表具有以下列:customer_id,name,address,website和credit_limit。customers表中這些列中也有對應(yīng)的數(shù)據(jù)。
要從表的一個或多個列(column_1,column_2,…,column_n)中檢索數(shù)據(jù),請使用以下語法的SELECT語句:
在這個SELECT語句中:
首先,需要指定要查詢數(shù)據(jù)的表名。
其次,指定想要返回數(shù)據(jù)的列。 如果需要返回多個列,則需要用逗號(,)將這些列分隔。
注意,SELECT語句非常復(fù)雜,由許多子句組成,如ORDER BY,GROUP BY,HAVING,JOIN。 為了簡單起見,在本教程中,我們只關(guān)注SELECT和FROM子句的用法。
教程來源:樹懶學(xué)堂_一站式數(shù)據(jù)知識平臺_Oracle Select語句
如果是分別顯示,可以寫成兩條語句:
select
avg(salary),deptno
from
a
group
by
deptno;
select
avg(salary),companyno
from
a
group
by
companyno;
如果需要用一條SQL實現(xiàn),使用CUBE函數(shù):
select
avg(salary),deptno,companyno
from
a
group
by
cube(deptno,companyno);
網(wǎng)頁標(biāo)題:oracle如何分類小計,oracle小計用什么函數(shù)
網(wǎng)頁URL:http://chinadenli.net/article35/dsisgpi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、全網(wǎng)營銷推廣、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站收錄、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)