1. 程式人生 > >行轉列、列轉行題目(收集中...)

行轉列、列轉行題目(收集中...)

一、列轉行

1、把如下表

year  month amount
1991   1     1.1
1991   2     1.2
1991   3     1.3
1991   4     1.4
1992   1     2.1
1992   2     2.2
1992   3     2.3
1992   4     2.4
轉換為結果表
year m1  m2  m3  m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4

方法(MAX+DECODE+GROUP BY):

with t as 
(
select 1991 as year, 1 as month,1.1 as amount from dual
union all
select 1991 as year, 2 as month,1.2 as amount from dual
union all
select 1991 as year, 3 as month,1.3 as amount from dual
union all
select 1991 as year, 4 as month,1.4 as amount from dual
union all
select 1992 as year, 1 as month,2.1 as amount from dual
union all
select 1992 as year, 2 as month,2.2 as amount from dual
union all
select 1992 as year, 3 as month,2.3 as amount from dual
union all
select 1992 as year, 4 as month,2.4 as amount from dual
)
select year, MAX(decode(month,1,amount,null)) m1,
MAX(decode(month,2,amount,null)) m2,
MAX(decode(month,3,amount,null)) m3,
MAX(decode(month,4,amount,null)) m4
from t
)
group by year

2. 使用11g的新關鍵字 pivot

with t as 
(
select 'aa' a,'b11' b, 1 n from dual
union all
select 'aa' a,'b22' b, 2 n from dual
union all
select 'aa' a,'b33' b, 3 n from dual
)
select * from t pivot(max(b) for n in(1 as b1,2 as b2,3 as b3 ));

結果:

A  B1  B2  B3
--  ---  ---  ---
aa b11 b22 b33



 二、多行轉一行

select listagg(ename,',')
within group(order by empno desc)
from emp;

相關推薦

轉行題目(集中...)

一、列轉行 1、把如下表 year  month amount 1991   1     1.1 1991   2     1.2 1991   3     1.3 1991   4     1.4

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

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

使用case when,union all實現sql轉行

-- 建表 CREATE TABLE StudentScores ( UserName NVARCHAR(20), -- 學生姓名 Subject

Oracle字串,轉行的Sql語句總結

多行轉字串這個比較簡單,用||或concat函式可以實現 SQL Code 12select concat(id,username) str from app_userselect id||username str from app_user字串轉多列實際上就是拆分字串的問題

oracle轉行

行轉列:PIVOT列轉行:UNPIVOT這兩個是在oracle11g上面新增的函式。下面舉例說明用法。PIVOT:學生成績表,原資料:select class_name, student_name, course_type, result, created_date fr

SQL轉行

SQL行轉列、列轉行 這個主題還是比較常見的,行轉列主要適用於對資料作聚合統計,如統計某類目的商品在某個時間區間的銷售情況。列轉行問題同樣也很常見。 一、整理測試資料 create table wyc

mysql-轉行

group_concat(),函式說明     手冊上說明:該函式返回帶有來自一個組的連線的非NULL值的字串結果;     通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函式引數(就是欄位名)決定。分組必須有個標準,就是根據grou

Oracle SQL函式pivotunpivot置函式實現轉行

函式PIVOT、UNPIVOT轉置函式實現行轉列、列轉行,效果如下圖所示: 1.PIVOT為行轉列,從圖示的左邊到右邊 2.UNPIVOT為列轉行,從圖示的右邊到左邊 3.左邊為縱表,結構簡單,易擴充套件 4.右邊為橫表,展示清晰,方便查詢 5.很多時候業務表為縱表,但是統

刪除重複資料轉行

查詢是否有重複資料http://write.blog.csdn.net/postedit/53517081 select name,conunt(*) from test group by name having count(*)>1; 刪除重複資料 delete a

MySQL的轉行連線字串 concatconcat_wsgroup_concat函式用法

1.concat函式 使用方法: CONCAT(str1,str2,…) 返回結果為連線引數產生的字串。如有任何一個引數為NULL ,則返回值為 NULL。 注意: 如果所有引數均為非二進位制字串,則結果為非二進位制字串。 如果自變

Databricks 第11篇:Spark SQL 查詢(轉行Lateral View排序)

本文分享在Azure Databricks中如何實現行轉列和列轉行,並介紹對查詢的結果進行排序的各種方式。 一,行轉列 在分組中,把每個分組中的某一列的資料連線在一起: collect_list:把一個分組中的列合成為陣列,資料不去重,格式是['a','a','b'] collect_set:把一個分組中的

SQL Server 轉行。多成一

一、多行轉成一列(並以","隔開)表名:A表資料:想要的查詢結果:查詢語句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A

GreenPlum之數組合並取交集及函數

blog ner fun cnblogs $1 $$ ble lec temp --1.利用INTERSECT關鍵字數組之間交集函數 CREATE OR REPLACE FUNCTION array_intersect(anyarray, anyarray) RETU

SQL 多成一

CREATE TABLE [dbo].[a]([id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[value] [nchar]

資料庫一一行多

如題: select max(case when name='1' then [temp] else null end) as temp1 , max(case when name='2' t

WPS表格如何快速將轉換成轉換成行

1.選需要轉換行和列的整組資料 2.右鍵,點選複製 3.選擇一個孔的單元格,按滑鼠右鍵,點選選擇性貼上 4.然後彈出選擇性貼上對話方塊,將轉置前面的複選款勾上 5.點選確定後,可以發現行和列就發

oracle 建表建sequence序列刪除表中加註釋增加表中

1.建表 create table 表名 ( ID number(10) not null, SURRENDER_ID number(10), DATE_NAME va

三秒+一個小Demo,輕鬆掌握Hive中的 轉行!!!

閒話少敘,直接開幹! 先看Demo: 一、行轉列 首先,我們需要收集資料,建立一個檔案,內容如下: 一、啟動Hive,建立表並匯入資料: 1.1 建立表 create table test(name string,xingzuo string,xuexing string)

Mysql 轉行統計查詢 統計查詢

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

MySQL開發技巧 第二禪( 轉行生成唯一的序列刪除重複的資料)

一、如何進行行列或者列行的轉換     行轉列的關鍵是union ,列轉行的關鍵是join     需要進行行轉列的場景         報表的設計