国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - 深入sql oracle遞歸查詢

深入sql oracle遞歸查詢

2019-11-23 19:16oracle教程網 Oracle

本篇文章是對sql oracle 遞歸查詢進行了詳細的分析介紹,需要的朋友參考下

☆ 獲取數據庫所有表名,表的所有列名
   select name from sysobjects where xtype='u'
   select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')

☆ 遞歸查詢數據
Sql語句里的遞歸查詢 SqlServer2005和Oracle 兩個版本
以前使用Oracle,覺得它的遞歸查詢很好用,就研究了一下SqlServer,發現它也支持在Sql里遞歸查詢
舉例說明:
SqlServer2005版本的Sql如下:

比如一個表,有id和pId字段,id是主鍵,pid表示它的上級節點,表結構和數據:
CREATE TABLE [aaa](
 [id] [int] NULL,
 [pid] [int] NULL,
 [name] [nchar](10)
)
GO
INSERT INTO aaa VALUES(1,0,'a')
INSERT INTO aaa VALUES(2,0,'b')
INSERT INTO aaa VALUES(3,1,'c')
INSERT INTO aaa VALUES(4,1,'d')
INSERT INTO aaa VALUES(5,2,'e')
INSERT INTO aaa VALUES(6,3,'f')
INSERT INTO aaa VALUES(7,3,'g')
INSERT INTO aaa VALUES(8,4,'h')
GO
--下面的Sql是查詢出1結點的所有子結點
with my1 as(select * from aaa where id = 1
 union all select aaa.* from my1, aaa where my1.id = aaa.pid
)
select * from my1 --結果包含1這條記錄,如果不想包含,可以在最后加上:where id <> 1
--下面的Sql是查詢出8結點的所有父結點
with my1 as(select * from aaa where id = 8
 union all select aaa.* from my1, aaa where my1.pid = aaa.id
)
select * from my1;
--下面是遞歸刪除1結點和所有子結點的語句:
with my1 as(select * from aaa where id = 1
   union all select aaa.* from my1, aaa where my1.id = aaa.pid
)
delete from aaa where exists (select id from my1 where my1.id = aaa.id) 
Oracle版本的Sql如下:
比如一個表,有id和pId字段,id是主鍵,pid表示它的上級節點,表結構和數據請參考SqlServer2005的,Sql如下:
--下面的Sql是查詢出1結點的所有子結點
 SELECT * FROM aaa
  START WITH id = 1
CONNECT BY pid = PRIOR id
--下面的Sql是查詢出8結點的所有父結點
 SELECT * FROM aaa
  START WITH id = 8
CONNECT BY PRIOR pid = id
今天幫別人做了一個有點意思的sql,也是用遞歸實現,具體如下:
假設有個銷售表如下:
CREATE TABLE [tb](
    [qj] [int] NULL,    -- 月份,本測試假設從1月份開始,并且數據都是連續的月份,中間沒有隔斷
    [je] [int] NULL,    -- 本月銷售實際金額
    [rwe] [int] NULL,    -- 本月銷售任務額
    [fld] [float] NULL    -- 本月金額大于任務額時的返利點,返利額為je*fld
) ON [PRIMARY]
現在要求計算每個月的返利金額,規則如下:
1月份銷售金額大于任務額  返利額=金額*返利點
2月份銷售金額大于任務額  返利額=(金額-1月份返利額)*返利點
3月份銷售金額大于任務額  返利額=(金額-1,2月份返利額)*返利點
以后月份依次類推,銷售額小于任務額時,返利為0
具體的Sql如下:

復制代碼代碼如下:


WITH my1 AS (
                SELECT *,
                       CASE 
                            WHEN je > rwe THEN (je * fld)
                            ELSE 0
                       END fle,
                       CAST(0 AS FLOAT) tmp
                FROM   tb
                WHERE  qj = 1
                UNION ALL
                SELECT tb.*,
                       CASE 
                            WHEN tb.je > tb.rwe THEN (tb.je - my1.fle -my1.tmp) 
                                 * tb.fld
                            ELSE 0
                       END fle,
                       my1.fle + my1.tmp tmp -- 用于累加前面月份的返利
                FROM   my1,
                       tb
                WHERE  tb.qj = my1.qj + 1
            )
SELECT *
FROM   my1


SQLserver2008使用表達式遞歸查詢
--由父項遞歸下級 
with cte(id,parentid,text) 
as 
(--父項 
select id,parentid,text from treeview where parentid = 450 
union all 
--遞歸結果集中的下級 
select t.id,t.parentid,t.text from treeview as t 
inner join cte as c on t.parentid = c.id 

select id,parentid,text from cte 
--------------------- 
--由子級遞歸父項 
with cte(id,parentid,text) 
as 
(--下級父項 
select id,parentid,text from treeview where id = 450 
union all 
--遞歸結果集中的父項 
select t.id,t.parentid,t.text from treeview as t 
inner join cte as c on t.id = c.parentid 

select id,parentid,text from cte

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩欧美在线一区二区 | 久久精品亚洲精品 | 亚洲性视频 | 国产精品一卡二卡 | 色久视频 | 91 久久| 黄色一级视频在线观看 | 中文字幕三区 | 天天玩天天操天天射 | 中国大陆高清aⅴ毛片 | 国产免费黄色 | 亚洲精品99 | 91麻豆精品国产91久久久久久 | 艹逼逼视频 | 国产成人影院 | 久久久久久久久成人 | 精品久久久久久久久久久久久久 | 亚洲一区中文字幕在线观看 | av免费网站在线观看 | 免费观看av毛片 | 日韩福利 | 奇米二区 | 欧美精品1区2区 | 日韩成人精品在线 | 国产精品免费在线 | av在线电影网站 | 亚洲黄色特级片 | 亚洲一区二区三区久久久 | 一级片黄色免费 | 国产性猛交xxxx免费看久久 | 日韩精品无码一区二区三区 | 日韩亚洲一区二区 | 亚州男人天堂 | 国产激情| 免费看黄色一级大片 | 一大道一二三区不卡 | 亚洲精品无 | 久久精品成人 | 黄色在线观看网站 | 日本一区二区高清不卡 | 中国精品一区二区 |