pivot 与 unpivot 函数是SQL05新提供的2个函数
pivot 與 unpivot 函數(shù)是SQL05新提供的2個函數(shù) ?
------------------------------------------------------------------------------
pivot函數(shù):
create table test(id int,name varchar(20),quarter int,profile int)
insert into test values(1,'a',1,1000)
insert into test values(1,'a',2,2000)
insert into test values(1,'a',3,4000)
insert into test values(1,'a',4,5000)
insert into test values(2,'b',1,3000)
insert into test values(2,'b',2,3500)
insert into test values(2,'b',3,4200)
insert into test values(2,'b',4,5500)
?
select * from test????--創(chuàng)建表test
?
?
現(xiàn)在需要把quarter 從1列數(shù)據(jù)變成4列數(shù)據(jù)??效果如:
?
?
把一列拆成幾列這時候就能使用pivot函數(shù)很簡單的實現(xiàn)
?
select * from test
pivot
(
?sum([profile]) for [quarter]
?in
?([1],[2],[3],[4])
)
as
s
注:使用pivot把一列拆成幾列時 需要后面as取個別名 這是固定的格式 同時如 for前是必須使用聚合函數(shù)的
當然不使用pivot函數(shù)也可以得到相同效果 只是代碼長切效率低 但容易理解
select id,[name],
'1'=(select sum([profile]) from test where id=a.id and quarter=1),
'2'=(select sum([profile]) from test where id=a.id and quarter=2),
'3'=(select sum([profile]) from test where id=a.id and quarter=3),
'4'=(select sum([profile]) from test where id=a.id and quarter=4)
from test as a
group by id,name
?
-----------------------------------------------------------------------------------------
unpivot函數(shù) 顧名思義 他就是把幾列合并到1列中去
create table test1(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)
insert into test1 values(1,'a',1000,2000,4000,5000)
insert into test1 values(2,'b',3000,3500,4200,5500)
?
select * from test1 --創(chuàng)建test1表
我們要把Q1 Q2 Q3 Q4合到1列 季度列中去 如效果:
?
?
使用unpivot可以很簡單的實現(xiàn)
select id ,[name],[jidu],[xiaoshou] from test1
unpivot
(
?xiaoshou for jidu in
?([q1],[q2],[q3],[q4])
)
as f
注:同樣需要使用as取別名同樣是固定的格式 unpivot函數(shù)中沒有聚合函數(shù)?xiaoshou和jidu列都是原來沒有的 jidu表由原來的Q1 Q2 Q3 Q4組成?
?
同樣的不使用unpivot也可以實現(xiàn)以上的功能
select id,[name],
jidu='Q1',
xiaoshou=(select Q1 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q2',
xiaoshou=(select Q2 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q3',
xiaoshou=(select Q3 from test1 where id=a.id)
from test1 as a
union
select id,[name],
jidu='Q4',
xiaoshou=(select Q4?from test1 where id=a.id)
from test1 as a
轉載于:https://www.cnblogs.com/sukhoi/p/7434882.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的pivot 与 unpivot 函数是SQL05新提供的2个函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 显卡怎么超频设置图文步骤
 - 下一篇: 荣耀60怎么样值得买吗详情(荣耀60怎么