日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 小计 排序,使用SQL实现小计,合计以及排序

發布時間:2023/12/15 数据库 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 小计 排序,使用SQL实现小计,合计以及排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--說明:個人學習筆記,實現小計合計顯示,分組按BANK_ID+OP_DATE升序排序

復制代碼 代碼如下:

--測試數據CREATE TABLE #TB(ID VARCHAR(10),BANK_ID VARCHAR(10),OP_DATE VARCHAR(10),OPERATOR_NO VARCHAR(20),AMT DECIMAL(10,2))

INSERT #TB SELECT '1111','001','20121210',1234567,111.00

UNION ALL SELECT '2222','002','20121210',1234567,222.00

UNION ALL SELECT '3333','001','20121112',1234567,250.00

UNION ALL SELECT '4444','002','20121110',1234567,330.00

UNION ALL SELECT '5555','001','20121210',1234567,300.00

UNION ALL SELECT '6666','002','20121112',1234567,150.00

GO

--查詢SELECT A.ID

,A.BANK_ID

,A.AMT

,B.OP_DATE

,B.OPERATOR_NO

FROM

(

(SELECT

ID=CASE

WHEN GROUPING(BANK_ID)=1 THEN '合計'

WHEN GROUPING(ID)=1 THEN '小計'

ELSE ID END

,BANK_ID

,SUM(AMT) AMT

,ORDER_SIGN1=GROUPING(BANK_ID),ORDER_SIGN2=BANK_ID

,ORDER_SIGN3=GROUPING(ID)

FROM #TB

GROUP BY BANK_ID,ID WITH ROLLUP

HAVING GROUPING(ID)=1

UNION ALL?--先得出表的統計,再加上表中的數據

SELECT ID

,BANK_ID

,AMT

,ORDER_SIGN1=0,ORDER_SIGN2=BANK_ID

,ORDER_SIGN3=0

FROM #TB) A

LEFT JOIN?--為了顯示出OP_DATE、OPERATOR_NO

(SELECT ID

,OP_DATE

,OPERATOR_NO

FROM #TB) B ON A.ID = B.ID

) ORDER BY ORDER_SIGN1,ORDER_SIGN2,ORDER_SIGN3,OP_DATE

GO

--刪除測試DROP TABLE #TB

/*--測試結果

ID?BANK_ID?AMT?OP_DATE?OPERATOR_NO

3333?001?250.00?20121112?1234567

5555?001?300.00?20121210?1234567

1111?001?111.00?20121210?1234567

小計?001?661.00?NULL?NULL

4444?002?330.00?20121110?1234567

6666?002?150.00?20121112?1234567

2222?002?222.00?20121210?1234567

小計?002?702.00?NULL?NULL

合計?NULL?1363.00?NULL?NULL

--*/

時間: 2013-06-09

總結

以上是生活随笔為你收集整理的oracle 小计 排序,使用SQL实现小计,合计以及排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。