1. 程式人生 > >oracle 多列轉成一列(列轉行)、 行轉列

oracle 多列轉成一列(列轉行)、 行轉列

1.多列轉成一列(列轉行)

--6列轉成兩列(列轉行)

這就是最常見的列轉行,主要原理是利用SQL裡面的union

with temp as
 (select
   a.iid_sn,
   a.product_name,
   a.sales_figures,
   a.selling_cost,
   a.pretax_profit,
   a.closing_inventory
    from is_import_detail a, is_import b
   where a.isi_sn = b.isi_sn
   and b.import_year=?
   and b.import_month=?
   and a.product_name=?)

--sql中要想實現特定的排序,可以適當加一些整數
select 1,'銷售額' as salename, sales_figures as sale
  from temp
union
select 2,'銷售成本' as salename, selling_cost as sale
  from temp
union
select 3,'稅前利潤' as salename, pretax_profit as sale
  from temp
union
select 5, '期末庫存量' as serialname, closing_inventory as serial
  from temp

2.行轉列

主要原理是利用decode函式、聚集函式(sum),結合group by分組實現的,具體的sql如下:

select t.user_name,
       sum(decode(t.course, '語文', score, null)) as chinese,
       sum(decode(t.course, '數學', score, null)) as math,
       sum(decode(t.course, '英語', score, null)) as english
  from test_tb_grade t
 group by t.user_name
 order by t.user_name

相關推薦

oracle (轉行)

1.多列轉成一列(列轉行) --6列轉成兩列(列轉行) 這就是最常見的列轉行,主要原理是利用SQL裡面的union with temp as  (select    a.iid_sn,    a.product_name,    a.sales_figures,    a

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

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

oracle 表(table)上最後次 DML時間(row)上最後DML時間

轉載自:http://www.anbob.com/archives/734.html 在這介紹兩個oracle 10G開始提供的一個偽列ORA_ROWSCN,它又分為兩種模式一種是基於block,這是預設的模式,還有一種是基於row上,這種模式只能在建裡表時指定ROWD

oracle資料庫把某資料資料

select running_time, running_user, algorithm_id, algorithm_list_id, name1, name2, ROWNUM, wm_concat(t

SQL Server 轉行

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

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]

轉換一個字段中含有個另外張表的id | |

ret .net sub 模式 end posit tex 匹配 replace 1、Oracle Function --入參:表 id /* cxcyxm02 :操作表,含有一個存儲另一張表(xs0101)多個主鍵id的字段  ids :操作表的主鍵 i

postgresql合併string_agg函式

1 有時候我們會需要將多條資料根據一些特別的欄位做一些合併。比如下面這個查詢,正常會查詢出3條資料,但是我們會希望根據create_by 分成兩列顯示 2 這時候需要用到string_agg函式,先通過group by分組,在進行合併,當然查詢結果需要滿足group 

sqlserver把說明資料

sqlserver中可以對庫說明、表說明、表的列說明,這些說明起到註釋的作用。 有天同事問到如何把列說明變成一個欄位轉成表的資料,就不用那麼麻煩每次去改表了。 在資料庫中可以這樣查 先在shiyan1資料庫中 EXEC [shiyan1].sys.sp_addextende

SQL SERVER Date和Time合併處理報表資料

問題原由: intouch專案中,利用intouch指令碼來儲存資料時,存入的時間格式為:date,time分開儲存。在報表需求中,有需要利用查詢兩個時間段之間的資料。 問題解決: 1.直接寫指令

EXCEL中兩合併以及根據相同的值將表中的值複製到另張表中?

今在做EXCEL時遇兩問題,現和大家分享如下: 1、如何將表中兩列值合併到一列,並按照一定的分隔符進行分割,公式如下:       假如:要將F和G的值 合併到H列並按逗號“,”隔開:  H1=F1&“,"&G1 2、有兩張表,根據表中相同的編號將成績複製到

Hive裡實現資料的拆分一行explode使用

    在做資料轉換、清洗的過程中,經常會對行進行拆分、一行資料拆分為多行資料,下面是簡單的例子:    如圖表裡有如下資料:最終要得到結果如下:先用split進行分割得到一個數組,在用explode拆分陣列。LATERAL VIEW explode(split(b,',')

Mysql 轉行統計查詢 統計查詢

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

SQL Server 動態(引數化表名分組欄位欄位值)

一.本文所涉及的內容(Contents) 二.背景(Contexts)   其實行轉列並不是一個什麼新鮮的話題了,甚至已經被大家說到爛了,網上的很多例子多多少少都有些問題,所以我希望能讓大家快速的看到執行的效果,所以在動態列的基礎上再把表、分組欄位、行轉列欄位、值這四個行轉列固定需要的值變成真正意義的

db2中的轉行

行轉列 給出下面的資料: CREATE TABLE Sales (Year INT, Quarter INT, Results INT) YEAR QUARTER RESULTS----------- ----------- -----------

SQL轉行

--============================================== 作者:王運亮(wwwwgou) 時間:2011-06-10 部落格:http://blog.csdn.net/wwwwgou --======================

HQL的轉行

轉自:https://blog.csdn.net/weixin_38653290/article/details/84639754 列轉行 測試資料 hive> select * from col_lie limit 10; OK col_lie.user_id col_lie

MaxComputeSQL-轉行

摘要: 1. 假設我們在MaxCompute中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的地址資訊等,表資料假設如下: user_basic_info: id name 1 a 2 b 3 c 大資料計算服務(MaxCompute,原名ODPS)是

如何用PHP輸出張表格,55,要求每以顏色區分。

$color = array("#000000","#333333","#666666","#999999","#CCCCCC"); echo"<table>"; for($row=0;$row<5;$row++){     echo"<tr>"

hive-轉行

1. 假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的地址資訊等,表資料假設如下: user_basic_info: id name 1 a 2 b 3 c 4 d user_address; name address a add1 a ad