1. 程式人生 > >Oracle-列轉行+樹形查詢

Oracle-列轉行+樹形查詢

1、初始資料

select m.DEPARTMENT_ID,m.DEPARTMENT_NAME,level as dept_level
          from v_cs_base_department m
 start with m.DEPARTMENT_ID = 23981
 connect by m.DEPARTMENT_ID = prior m.PARENT_ID


2、中間資料

 select 
     DECODE(dept_level,'2',DEPARTMENT_NAME,NULL) area_name, 
     DECODE(dept_level,'3',DEPARTMENT_NAME,NULL) company_name
  from (select m.DEPARTMENT_ID,m.DEPARTMENT_NAME,level as dept_level
            from v_cs_base_department m
                 start with m.DEPARTMENT_ID = 23981
        connect by m.DEPARTMENT_ID = prior m.PARENT_ID)

3、最後資料(如果wm_concat後的結果沒有出現clob型別,可以不用to_char()函式進行轉換)

select to_char(wmsys.wm_concat(area_name)) area_name,
       to_char(wmsys.wm_concat(company_name)) company_name                         
                          from (
                                  select 
                                              DECODE(dept_level,'2',DEPARTMENT_NAME,NULL) area_name, 
                                              DECODE(dept_level,'3',DEPARTMENT_NAME,NULL) company_name
                                   from (select m.DEPARTMENT_ID,m.DEPARTMENT_NAME,level as dept_level
                                                   from v_cs_base_department m
                                                      start with m.DEPARTMENT_ID = 23981
                                                    connect by m.DEPARTMENT_ID = prior m.PARENT_ID))

相關推薦

Oracle-轉行+樹形查詢

1、初始資料select m.DEPARTMENT_ID,m.DEPARTMENT_NAME,level as dept_level from v_cs_base_department m start with m.DEPARTMENT_ID = 239

Oracle轉行函式版本不相容解決方案

業務場景 本部落格記錄一下Oracle列轉行函式在Oracle11的一些不相容問題,vm_concat在一些業務場景是必須的。不過這個函式使用要謹慎,底層實現應該也是group by等等實現的,效能並不是特別好。這個函式在Oracle12是沒有的,在Oracle11是不太相容的,Oracle10可以正常使用

Oracle轉行函數版本不兼容解決方案

版本 where () 版本不兼容 wm_concat http class 就是 href 業務場景 本博客記錄一下Oracle列轉行函數在Oracle11的一些不兼容問題,vm_concat在一些業務場景是必須的。不過這個函數使用要謹慎,底層實現應該也是group by

Oracle轉行函式使用

一、業務場景 今天需要實現一個table,有一列的效果是:使用者姓名A(賬號a),使用者姓名B(賬號b)...這種格式。這就想到oracle的列轉行函式vm_concat。 可以用類似這種格式wm_concat(a || '(' || b || ')'),a表示使用者名稱欄位,b表示賬號欄位。 例子: &

Mysql 轉行統計查詢 、行轉統計查詢

- ---------------------------- -- Table structure for `TabName` -- ---------------------------- DROP TABLE IF EXISTS `TabN

Oracle轉行函式 Listagg() 語法詳解及應用例項

工作中用到一段比較複雜的SQL查詢指令碼,使用了listagg()函式實現了具有多個值的欄位的填充(即,列表聚合,list aggregation(我猜的))。說簡單點,listagg()函式可以實現多列記錄聚合為一條記錄,從而實現資料的壓縮、緻密化(data densifi

Oracle 轉行函式 Listagg()

最基礎的用法: LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX) 例如有這樣一張表: FID    FType   FName 1       DB      MySQL 1       DB      Oracle

ORACLE 樹形查詢查詢

tar pid table oracle connect 查詢 ora pos spa 前臺樹結構依據個人的權限登錄變化 全部我查詢要依據 樹的ID 查詢以下全部的子節點 以及本節點的信息 select * from table start with id = #{i

sql轉行查詢

select lec 結果 test es2017 style com cnblogs end test表: 執行列轉行sql: select student, sum(case Course when ‘語文‘ then Score else null

oracle wm concat函式 用於轉行 逗號分隔

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

Oracle:ORA-01789: 查詢塊具有不正確的結果數 分析原因和解決辦法

一、分析原因 union指令的目的是將兩個sql語句的查詢結果合併起來, 可以檢視你要的查詢結果 。 但是要注意使用union連線的兩個sql 語句的欄位型別 、 欄位個數 、 欄位名要求完全匹配 。 union在進行表連線後會對產生的結果進行排序運算 , 刪除重複資料後返回結

oracle 樹形查詢

--1.1 簡單的樹形查詢 SELECT empno AS 員工編碼,        ename AS 姓名,        mgr   AS 主管,        (PRIOR ename) AS 主

oracle轉行的問題

列轉行有兩種表示: 第一種是:  select *   from talbe   pivot (sum( N_PRICE) for vc_level in ('初級' as primary,'中一級' AS middleLevel,'中二級' AS secondary,'

oracle行轉轉行、連續日期數字實現方式及mybatis下實現方式

九月份複習,十月份考試,十月底一直沒法收心,趕在十一初 由於不可抗拒的原因又不得不重新找工作就;欸~, 又是一番折騰,從入職到現在,可又沒法閒下來了... 這次就簡單介紹下oracle資料庫下如何實現行轉列、列轉行及此在mybatis中的實現方式,就具體用法我就不詳細說了,主要介紹下實戰中所碰到的坑

SQL資料庫查詢實現行轉轉行結果SQL語句

 CREATETABLE[StudentScores](    [UserName]NVARCHAR(20),        --學生姓名[Subject]NVARCHAR(30),        --科目[Score]FLOAT,               --成績)INSERTINTO[StudentS

[面試][oracle] 資料庫 行轉 轉行詳解

[一]、行轉列 1.1、初始測試資料 表結構:TEST_TB_GRADE create table TEST_TB_GRADE    (      ID        NUMBER(10) notnull,      USER_NAME VARCHAR2

Oracle 行轉pivot 、轉行unpivot 的Sql語句總結

多行轉字串 這個比較簡單,用||或concat函式可以實現 print? 1.  select concat(id,username) str from app_user   2.     3.  select id||username str from app_use

SQL 操作轉行查詢

題目: 如下一張學生成績表(tb_score) ``` t_name t_course t_score 小明 語文 90 小明 數學 87 小明

【面試題】統計產量資料:難點(分組彙總 轉行 查詢結果插入)

題目:有一張資料產量表 如下YearMonthdata2016150020162600.........201712300編寫SQL,產生如下資料,並儲存到tab2,其中S1 S2 S3 S4代表4個季度YearS1S2S3S4201612003000600080002017

SQL查詢結果轉行

資料庫-行轉列的語法 1.表: PerTab欄位:name,  title,  values 原內容:一月  產品A   120    二月  產品A   20    一月  產品B    230