Informatical 行列轉換

2022-02-21 02:37:36 字數 1614 閱讀 4333

以前在做dba時在db裡寫過行轉列,列轉行的code.這兩天做了一下測試用informatica來實現行列互換的功能。

列轉行的sql實現

env: rmdb

table:sales

storename quarter1 quarter2 quarter3 quarter4

store1 100 300 500 700

store2 200 400 600 800

solution:

select storename,quarter1 as sales, 1 as quarter

from sales

group by storename,quarter1

union

select storename,quarter2 as sales, 2 as quarter

from sales

group by storename,quarter2

union

select storename,quarter3 as sales, 3 as quarter

from sales

group by storename,quarter3

union

select storename,quarter4 as sales, 4 as quarter

from sales

group by storename,quarter4

列轉行的informatica實現

1 source tables匯入maping

2 sqlqualifer讀取資料

3 normalizer實現對應的列行轉換,在normalizer屬性裡設定storename,quarter data(為level 1,每季度的銷售值sales為level2. quarter data的occurs值設為4就可實現列行轉換

二  行轉列的sql實現

env:

createtablesales2(storenamevarchar(20),

salesnumber(9),quarternumber(9))

select*fromsales2

solution:

selectstorename,

max(casewhenquarter=1thensaleselse0end)quarter1,

max(casewhenquarter=2thensaleselse0end)quarter2,

max(casewhenquarter=3thensaleselse0end)quarter3,

max(casewhenquarter=4thensaleselse0end)quarter4

fromsales2

groupbystorename

orderbystorename

informatica實現

1 匯入源表sales2

2 sqlqulifer讀取資料

3 用experssion transformation來判斷quarter值來取sales值

4 用聚合函式來取出判斷後的最大值,即真正的sales值

5匯入到目標表或目標檔案後即實現了行轉列的功能。

Oracle 行列轉置

兩種簡單的行列轉置 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英語 s...

SQL 行列轉置

我學會了第二種方法 sql2005中的方法 create table tb id int,value varchar 10 insert into tb values 1,aa insert into tb values 1,bb insert into tb values 2,aaa insert...

Oracle 行列轉置

兩種簡單的行列轉置 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英語 s...