交叉資料包表

2021-06-13 04:05:11 字數 2306 閱讀 7713

ql交叉資料包表

有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable?、建立交叉資料包表或旋轉資料。

假定有乙個表 pivot,其中每季度佔一行。對 pivot 的 select 操作在垂直方向上列出這些季度:

year      quarter      amount

—-      ——-      ——

1990      1           1.1

1990      2           1.2

1990      3           1.3

1990      4           1.4

1991      1           2.1

1991      2           2.2

1991      3           2.3

1991      4           2.4

生成報表的表必須是這樣的,其中每年佔一行,每個季度的數值顯示在乙個單獨的列中,如:

year   1990    1991 

q1     1.1       2.1

q2     1.2       2.2

q3     1.3       2.3

q4     1.4       2.4

下面的語句用於建立 pivot 表並在其中填入第乙個表中的資料:

use northwind

gocreate table pivot

( year      smallint,

quarter   tinyint, 

amount      decimal(2,1) )

goinsert into pivot values (1990, 1, 1.1)

insert into pivot values (1990, 2, 1.2)

insert into pivot values (1990, 3, 1.3)

insert into pivot values (1990, 4, 1.4)

insert into pivot values (1991, 1, 2.1)

insert into pivot values (1991, 2, 2.2)

insert into pivot values (1991, 3, 2.3)

insert into pivot values (1991, 4, 2.4)

go下面是用於建立旋轉結果的 select 語句:

select year, 

sum(case quarter when 1 then amount else 0 end) as q1,

sum(case quarter when 2 then amount else 0 end) as q2,

sum(case quarter when 3 then amount else 0 end) as q3,

sum(case quarter when 4 then amount else 0 end) as q4

from northwind.dbo.pivot

group by year

go該 select 語句還處理其中每個季度佔多行的表。group by 語句將 pivot 中一年的所有行合併成一行輸出。當執行分組操作時,sum 聚合中的 case 函式的應用方式是這樣的:將每季度的 amount 值新增到結果集的適當列中,在其它季度的結果集列中新增 0。

如果該 select 語句的結果用作電子**的輸入,那麼電子**將很容易計算每年的合計。當從應用程式使用 select 時,可能更易於增強 select 語句來計算每年的合計。例如:

select p1.*, (p1.q1 + p1.q2 + p1.q3 + p1.q4) as yeartotal

from (select year,

sum(case p.quarter when 1 then p.amount else 0 end) as q1,

sum(case p.quarter when 2 then p.amount else 0 end) as q2,

sum(case p.quarter when 3 then p.amount else 0 end) as q3,

sum(case p.quarter when 4 then p.amount else 0 end) as q4

from pivot as p

group by p.year) as p1

go帶有 cube 的 group by 和帶有 rollup 的 group by 都計算與本例顯示相同的資訊種類,但格式稍有不同。

交叉資料包表

有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable 建立交叉資料包表或旋轉資料。假定有乙個表pivot,其中每季度佔一行。對pivot的 select 操作在垂直方向上列出這些季度 year quarter amount 1990 1 1.1 1990...

交叉資料包表

有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable 建立交叉資料包表或旋轉資料。假定有乙個表pivot,其中每季度佔一行。對pivot的 select 操作在垂直方向上列出這些季度 year quarter amount 1990 1 1.1 1990...

對於大資料包表列印

使用大資料的poi處理物件 sxssfworkbook 特點 使用一部分物件 100行 釋放一部分物件 注意事項 1.不支援模板列印 2.不支援太多的樣式 64000 一些字型樣式 font font wb.createfont font.setfontname 黑體 font.setfonthei...