1. 程式人生 > >SQL Server 2008中的CTE遞迴查詢得到一棵樹

SQL Server 2008中的CTE遞迴查詢得到一棵樹

with CTE as    
(     
-->Begin 一個定位點成員     
 select ID, Name,Parent,cast(Name as nvarchar(max)) as TE,  
        ROW_NUMBER()over(order by getdate()) as OrderID  
        --最關鍵是上面這個欄位,要獲取排序欄位,按字串來排序。  
        --其中視窗函式必須要使用order by,但是不能用整型,那就用時間吧  
        from Tree where Parent is null    
-->End      
union all     
-->Begin一個遞迴成員     
 select Tree.ID, Tree.Name,Tree.Parent,cast(replicate(' ',len(CTE.TE))+'|_'+Tree.name as nvarchar(MAX)) as TE,  
        CTE.OrderID*100+ROW_NUMBER()over(Order by GETDATE()) as OrderID  
        from Tree inner join CTE     
        on Tree.Parent=CTE.Name     
-->End     
)     
select * from CTE  
order by LTRIM(OrderID)--最後將這個整型資料轉換為字串型的進行排序  
  
--有時候整型可以比大小,字串也可以,字串比的大小是一位一位進行字元比較的  
--整型+字串==整型,只有字串+字串==兩個字串的並和  
--遞迴查詢中:第二條記錄可以引用第一條記錄的值  
--動態載入記錄時,同一個等級的記錄識別符:RowNumber()over(order by getdate())  
--延伸:可以動態獲取某個部門下的所以子部門。也可以獲取該部門上級的所以部門  
  
--總結:首先要拼湊出一個整型資料,然後轉換為字串,最後是進行字串的order,而不是整型資料的order, 

相關推薦

SQL Server 2008CTE查詢得到

with CTE as     (      -->Begin 一個定位點成員       select ID, Name,Parent,cast(Name as nvarchar(max)) as TE,           ROW_NUMBER()over(order by getdat

演算法得出的高度

計算二叉樹樹高的遞迴演算法我想各位朋友們都已經很熟悉了,那麼我們今天就來介紹一種非遞迴的演算法,主要利用的還是層次遍歷 /** * 得出一棵樹的高度(非遞迴演算法) */

SQL Server CTE 查詢

name                                               senior                                             level   --------------------------------------------

SQL Server 2008的9種數據挖掘算法

有序 另一個 多個 對比 現象 order 訓練樣本 data clas 1.決策樹算法 決策樹,又稱判定樹,是一種類似二叉樹或多叉樹的樹結構。決策樹是用樣本的屬性作為結點,用屬性的取值作為分支,也就是類似流程圖的過程,其中每個內部節點表示在一個屬性上的測試,每個分支代表一

Sql Server 2008儲存過程傳入表值引數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server 2008SQL應用系列及BI學習筆記系列--目錄索引

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Microsoft SQL Server 2008 MDX Step by Step 學習筆記 MDX查詢第一課

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server 2008增強的彙總技巧

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server 2008SQL增強之三 Merge 在條語句使用Insert Update Delete

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server 利用WITH AS獲取層級關係資料

WITH AS短語,也叫做子查詢部分(subquery factoring),在SQL Server 2005中提供了一種解決方案,這就是公用表表達式(CTE),使用CTE,可以使SQL語句的可維護性,同時,CTE要比表變數的效率高得多。     下面是CTE的語法:

SQL Server 2008的Pivot和UnPivot

                今天給新成員講解PIVOT 和 UNPIVOT示例,順便整理了一下其用法。這是自SQL Server 2005起提供的新功能。首先看PIVOT示例:基本表資料:IF NOT OBJECT_ID('tb_Income') IS NULL    DROP TABLE [tb_Inc

如何清除SQL Server 2008登陸時的歷史記錄

SQL Server Management Studio登陸視窗 清空這些多餘的登陸名,主要是刪除SqlStudio.bin檔案 WinXP: C:\Documents and Settings\使用者資料夾\Application Data\Microsoft\Micr

SQL Server 2008Analysis Services的新特性——深入SQL Server 2008

SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008內容簡介:本書涵蓋了SQL Server 2008引入的新功能。作者之一Robert E.Walters是微軟公司SQL Server開發團隊的專案經理,在關係資料

SQL Server 2008 新建登入使用者 並指定該使用者登入的資料庫及許可權

一、實驗環境 Windows 7 SQL Server 2008 資料庫例項名為 TestDB,新建的使用者名稱為 testUser 二、操作步驟 1、開啟 SQL Server Management Studio,以 Windows身份認證方式登入 2、在物件資源管理器

MySql、Oracle(通用方法)查詢生成檔案目錄(JAVA實現 過程不訪問資料庫,之前只訪問兩次 進行前資料準備)

查詢檔案樹 實體類 public class TradeInfoFile { ​ // 檔案編碼(子) private String fileCode; // 所屬檔案編碼(父) private String belongFileCode; // 交易

SQL Server 2008輸出字串並換行的方法

在SQL Server中想輸出字串並換行的方法,示例如下: print '中國'+char(13)+char(10)+'人民' declare   @a   varchar(20) set   @a= 'aaa '+char(13)+char(10)+ 'bbbb '

JDBC 插入 SQL Server 2008 文字出現亂碼分析.

在sql server 資料庫有中文亂碼很常見, 第一種 可能是 你 08的庫 還原 05庫的資料. 而之前05庫的編碼格式與你08的不相同.這時你在本地操作資料庫時就有可能產生中文亂碼了. 一般我們本地的SQL都是直接下一步下一步的操作.編碼格式都是預設的. 所以只要

SQL server 2008 物件名無效的問題

在大家開始使用 SQL server 2008的時候會遇上一個問題,是什麼呢?就是在對錶操作之後,重新操作表時,會發現表名會有紅色波浪線標註,顯示錯誤,滑鼠點選之後發現提示“物件名***無效”,但是我們繼續操作,又不會對我們的操作有任何影響,但是顯示紅色有些不美觀,那麼如

sql server 2008 如何將個數據庫已建好的表匯入到另個數據庫

將一個數據表從一個數據庫匯入到另一個數據庫可以按如下步驟操作:(1)啟動Microsoft SQL Server Management Studio程式(2)按提示操作進入系統(3)選擇那個建好表的資料庫(4)點選滑鼠右鍵,會彈出一個選單,選擇選單命令:任務/匯出資料(5)按

sql server 2008備份集中的資料庫備份與現有的xx資料庫不同的解決方法

如圖: 解決方法: 問題:在另一臺電腦對同名數據庫做的備份,用常規方法還原,提示不是相同資料庫,不讓還原。解決方法: 一、右擊系統資料庫master,新建查詢,執行以下SQL程式碼 <pre name="code" class="plain">REST