回覆網友問題,關於一個數值和字串一起累加的問題!
回覆網友問題,關於一個數值和字串一起累加的問題![@more@]急急急!!!請各位大哥賜教一個數值和字串一起累加的問題!
SQL
CODE MONEY FLAG
-------------------- ---------- --------------------
1001 99 新建
1002 100 編輯
1002 300 新建
1002 500 取消
1002 700 編輯
1003 20 取消
1003 60 新建
7 rows selected
SQL>
SQL> select code, sm, WMSYS.WM_CONCAT(nflag) flag
2 from (select a.*, decode(ct, 2, flag || '(' || ct || ')', flag) nflag
3 from (select unique code,
4 flag,
5 count(flag) over(partition by code, flag) ct,
6 sum(money) over(partition by code) sm
7 from addtest) a) b
8 group by code, sm
9 /
CODE SM FLAG
-------------------- ---------- --------------------------------------------------------------------------------
1001 99 新建
1002 1600 新建,編輯(2),取消
1003 80 新建,取消
SQL>
oracle 9i :
關鍵字: 字串相加
一。建立測試表
CREATE TABLE addtest(
CODE VARCHAR2(20),
MONEY NUMBER,
FLAG VARCHAR2(20)
);
INSERT INTO addtest VALUES (1001, 99.00, '新建');
INSERT INTO addtest VALUES (1002, 100.00, '編輯');
INSERT INTO addtest VALUES (1002, 300.00, '新建');
INSERT INTO addtest VALUES (1002, 500.00, '取消');
INSERT INTO addtest VALUES (1002, 700.00, '編輯');
INSERT INTO addtest VALUES (1003, 20, '取消');
INSERT INTO addtest VALUES (1003, 60, '新建');
COMMIT;
select * from addtest;
二。想要得到的結果:
CODE MONEY FLAG
1001 99 新建
1002 1600 新建,編輯(2),取消
1003 80 新建,取消
拜託各位前輩大哥不吝賜教,先謝過了,小弟急啊!
oracle 10G:
一。建立測試表
CREATE TABLE addtest(
CODE VARCHAR2(20),
MONEY NUMBER,
FLAG VARCHAR2(20)
);
INSERT INTO addtest VALUES (1001, 99.00, '新建');
INSERT INTO addtest VALUES (1002, 100.00, '編輯');
INSERT INTO addtest VALUES (1002, 300.00, '新建');
INSERT INTO addtest VALUES (1002, 500.00, '取消');
INSERT INTO addtest VALUES (1002, 700.00, '編輯');
INSERT INTO addtest VALUES (1003, 20, '取消');
INSERT INTO addtest VALUES (1003, 60, '新建');
COMMIT;
select * from addtest;
二。想要得到的結果:
CODE MONEY FLAG
1001 99 新建
1002 1600 新建,編輯(2),取消
1003 80 新建,取消
拜託各位前輩大哥不吝賜教,先謝過了,小弟急啊!
oracle 10G:
SQL
select a.code,fl,money from
2 (select code,substr(sys_connect_by_path(falg,','),2) fl,money,level le from
3 (select row_number() over(order by code) rn,code,
4 decode(count(flag),1,flag,flag||'('||count(flag)||')') falg
5 ,sum(sum(money)) over(partition by code) money from addtest group by code,flag)
6 connect by prior code=code and prior rn+1=rn) a
7 ,(select code,count(distinct flag) co from addtest group by code) b
8 where a.le=b.co and a.code=b.code;
2 (select code,substr(sys_connect_by_path(falg,','),2) fl,money,level le from
3 (select row_number() over(order by code) rn,code,
4 decode(count(flag),1,flag,flag||'('||count(flag)||')') falg
5 ,sum(sum(money)) over(partition by code) money from addtest group by code,flag)
6 connect by prior code=code and prior rn+1=rn) a
7 ,(select code,count(distinct flag) co from addtest group by code) b
8 where a.le=b.co and a.code=b.code;
i did :
SELECT code,sm,LTRIM(MAX(SYS_CONNECT_BY_PATH(nflag,',')),',') nflag
from
(
select code,sm,nflag,MIN(nflag) OVER(PARTITION BY code) nflag_MIN,
(ROW_NUMBER() OVER(ORDER BY code,sm,nflag))+(DENSE_RANK() OVER (ORDER BY code,sm)) NUMID
from
(
select code,sm,decode(ct, 2, flag || '(' || ct || ')', flag) nflag
from (select unique code,
flag,
count(flag) over(partition by code, flag) ct,
sum(money) over(partition by code) sm
from addtest) a
)b
)c
START WITH nflag=nflag_MIN CONNECT BY NUMID-1=PRIOR NUMID
GROUP BY code,sm;
> select * from addtest;from
(
select code,sm,nflag,MIN(nflag) OVER(PARTITION BY code) nflag_MIN,
(ROW_NUMBER() OVER(ORDER BY code,sm,nflag))+(DENSE_RANK() OVER (ORDER BY code,sm)) NUMID
from
(
select code,sm,decode(ct, 2, flag || '(' || ct || ')', flag) nflag
from (select unique code,
flag,
count(flag) over(partition by code, flag) ct,
sum(money) over(partition by code) sm
from addtest) a
)b
)c
START WITH nflag=nflag_MIN CONNECT BY NUMID-1=PRIOR NUMID
GROUP BY code,sm;
CODE MONEY FLAG
-------------------- ---------- --------------------
1001 99 新建
1002 100 編輯
1002 300 新建
1002 500 取消
1002 700 編輯
1003 20 取消
1003 60 新建
7 rows selected
SQL>
SQL> select code, sm, WMSYS.WM_CONCAT(nflag) flag
2 from (select a.*, decode(ct, 2, flag || '(' || ct || ')', flag) nflag
3 from (select unique code,
4 flag,
5 count(flag) over(partition by code, flag) ct,
6 sum(money) over(partition by code) sm
7 from addtest) a) b
8 group by code, sm
9 /
CODE SM FLAG
-------------------- ---------- --------------------------------------------------------------------------------
1001 99 新建
1002 1600 新建,編輯(2),取消
1003 80 新建,取消
SQL>
oracle 9i :
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/101162/viewspace-1011826/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20240807]數值累加的問題.txt
- 關於css權值的問題CSS
- 回覆關於原始碼沙盒防洩密的四個問題原始碼
- [20181229]關於字串的分配問題.txt字串
- 關於int型別數值的運算問題型別
- 陣列累加和問題三連陣列
- 關於一個歸檔問題?
- 關於回覆資料後,登入不上的問題
- 關於Integer面試的一個問題面試
- 關於python中填充缺失值的問題Python
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- 關於問問題和時間管理的感悟
- 字串轉數字的問題字串
- PHP 字串強制轉換為數值問題PHP字串
- Python—關於Pandas缺失值問題(國內唯一)Python
- 關於Linux一些問題和答案Linux
- [20190102]關於字串的分配問題(10g).txt字串
- 關於 django-ckeditor 前段使用的一個問題Django
- 關於this指向的問題
- 關於Redis的一些小問題Redis
- 請教一個關於不確定條件個數搜尋的問題
- 對於數字或者字串有限的問題的處理字串
- 關於ImageView的幾個常見問題View
- 關於解決問題的幾個段位
- 關於dcat-admin的兩個問題...
- 一個關於ace-editor編輯器的問題
- 關於setInterval和setTImeout中的this指向問題
- 關於 SAP Spartacus 和 SmartEdit 整合的問題
- 關於mysql字元和數字型別轉換的問題研究MySql字元型別
- SAS 數值儲存方式和精度問題
- python 小白求教一個字串顯示問題Python字串
- 一個關於JS解決陣列相乘問題JS陣列
- 關於Jmeter引數化的編碼問題JMeter
- 關於DrawerLayout的小問題
- 關於javascript的this指向問題JavaScript
- 關於 Puerts 的效能問題
- 關於HTTP和HTTPS常見問題HTTP
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- 關於網路硬體配置出現問題,無法上網問題的解決