逆透視轉換

2021-09-06 18:32:04 字數 2921 閱讀 9709

逆透視轉換是一種將資料從列的狀態轉換成行的狀態的一種技術。進行逆透視轉換一般要經歷三個邏輯處理階段:生成副本,提取元素和刪除不相關的交叉。

下面是乙個進行逆透視轉換的示例。

use

tempdb;

go--

逆透視轉換(列轉行)

--準備測試資料

ifobject_id('

dbo.orders

','u

') is

notnull

drop

table

dbo.orders;

gocreate

table

dbo.orders

( orderid

intnot

null

, orderdate

datetime

notnull

, empid

intnot

null

, custid

varchar(5) not

null

, qty

intnot

null

,

constraint pk_orders primary

key(orderid)

);insert

into

dbo.orders(orderid,orderdate,empid,custid,qty)

values

(30001,'

20070802

',3,'

a',10

), (

10001,'

20071224

',2,'

a',12

), (

10005,'

20071224

',1,'

b',20

), (

40001,'

20080109

',2,'

a',40

), (

10006,'

20080118

',1,'

c',14

), (

20001,'

20080212

',2,'

b',12

), (

40005,'

20090212

',3,'

a',10

), (

20002,'

20090216

',1,'

c',20

), (

30003,'

20090418

',2,'

b',15

), (

30004,'

20070418

',3,'

c',22

), (

30007,'

20090907

',3,'

d',30

);

ifobject_id('

dbo.empcustorders

','u

') is

notnull

drop

table

dbo.empcustorders;

goselect

empid,a,b,c,d

into

dbo.empcustorders

from (select empid,custid,qty from dbo.orders) as

dpivot(

sum(d.qty) for d.custid in (a,b,c,d)) as

p;select

*from dbo.empcustorders;

逆透視前:

逆透視也有兩種解決方案,一是使用標準sql,另一種是使用unpivot運算子。下面是示例**。

--

1,使用標準sql

--交叉聯接,派生表

select

*from (select

empid,custid,

case

custid

when'a

'then

a

when'b

'then

b

when'c

'then

c

when'd

'then

d

endas

qty

from

dbo.empcustorders

cross

join (select'a

'ascustid

union

allselect'b

'union

allselect'c

'union

allselect'd

') as custs) as

dwhere qty is

notnull;--

2,使用unpivot運算子

select

empid,custid,qty

from

dbo.empcustorders

unpivot (qty

for custid in (a,b,c,d)) as u;

逆透視後的效果如下圖。

逆透視轉換

逆透視轉換 unpivoting 是一種把資料從列的狀態旋轉為行的狀態的技術。通常,它涉及查詢資料的透視狀態,將來自單個記錄中多個列的值擴充套件為單個列中具有相同值的多個記錄。換句話說,把透視表中的每個源行潛在地轉換成多個行,每行代表源透視表的乙個指定的列值。使用標準sql 進行逆透視轉換 解決方案...

第7章 透視 逆透視及分組集

use tempdb go 第7章 透視 逆透視及分組集 7.1 透視轉換 透視轉換 pivoting 是一種把資料從行的狀態轉換為列的狀態的處理 if object id dbo.orders u is not null drop table dbo.orders create table dbo...

消失點計算 逆透視變換(IPM)

當我們看火車軌道的時候總在某個距離上看到兩條軌道重合到一起後消失。原圖四個點選擇 下面的 是智慧型駕駛系統專案中的原始碼,這裡把opencv中的介面稍微封裝了一下,其中有些與透視變換無關的引數,可以忽略不管 比較重要的一點是 這裡的原圖的四個點是通過車載攝像頭的標定資訊計算出來的,可以通過車載攝像頭...