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