當前位置:首頁 » 編程語言 » sqlpivot語法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlpivot語法

發布時間: 2022-05-01 14:08:41

sql SERVER 2008 新功能 pivot 與 UnPivot

主要用於行列轉換
--行轉列pivot
select * from tb
姓名 課程 分數

---------- ---------- -----------

張三 語文 74

張三 數學 83

張三 物理 93

李四 語文 74

李四 數學 84

李四 物理 94

select * from tb pivot(max(分數) for 課程 in(語文,數學,物理))a
姓名 語文 數學 物理
--------------------------
李四 74 84 94
張三 74 83 93

--列轉行unpivot
select * from tb
姓名 語文 數學 物理

---------- ----------- ----------- -----------

張三 74 83 93

李四 74 84 94

select 姓名,課程,分數 from tb unpivot( 分數 for 課程 in (語文,數學,物理)) t
姓名 課程 分數
--------------------
張三 語文 74
張三 數學 83
張三 物理 93
李四 語文 74
李四 數學 84
李四 物理 94

❷ sql動態多行轉列,PIVOT怎麼能轉兩列

樓上那個用過sqlserver嗎?

PIVOT是支持的!!!!!

不過看你的語法,肯定報錯。PIVOT最好基於SELECT * 並且先把全部需求的欄位轉換未列:

select * from

(select CONVERT(varchar(100),年月)+'受理' 欄位,sum(受理數量) 數量 from

表a

GROUP BY 年月

UNION ALL

select CONVERT(varchar(100),年月)+'辦結'欄位,sum(辦結數量) 數量 from

表a

GROUP BY 年月)v

PIVOT ( MAX(v.數量) FOR v.欄位 IN ( [2019-01受理],

[2019-02受理],

[2019-03受理],

[2019-04受理],

[2019-01辦結],

[2019-02辦結],

[2019-03辦結],

[2019-04辦結] )) 網路知道回答用

❸ sql2005 PIVOT函數語法及用法

Select*
Fromtb
Pivot
(
Max(分數)
For課程in(語文,數學,物理)
)x


--X為隨意取的別名,這里必須取一個

❹ sql關於pivot行列轉換的問題

--樓主 這個是典型的行轉列
--腳本如下
select 星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日

from test pivot (sum(income) for week in(星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日)) as tt
--如果解決了樓主的問題 請採納
--有什麼疑問可以隨時找我

❺ 寫sql,怎麼將查詢結果的行列轉換呀

有意思的問題 給出一個參考的URL: 假設你表是這樣的結構部件 入庫日期 入庫數量 A 1/1 10 A 1/1 5 A 1/2 10 B 1/5 10 其實就是兩種方法,假設你的資料庫是11以前的,只能先定義好查哪天到哪天 然後那麼 selct 部件, sum( decode(入庫日期=1號,入庫數量,0), sum( decode(入庫日期=2號,入庫數量,0), 以此類推 from 入庫表 group BY 部件(原理上就是將不是這天的變成0,再合計)要是Oracle資料庫是11的話,就簡單了,直接pivot搞定 pivot語法就不說了,網上一堆一堆的 ~

❻ sql語句在使用pivot出現的錯誤提示

select * from #aa a pivot (max(qr_type) for xmname in ('+@sql+') ) as b

修改為

SET @sql = 'select * from #aa a pivot (max(qr_type) for xmname in (' + @sql + ') ) as b';
EXECUTE IMMEDIATE (@sql);

❼ SQL中對臨時表如何用 PIVOT 進行列轉換

1、跟是否臨時表沒有關系。

2、SELECT列表中的轉出欄位,也要加上[]

3、加上DQ欄位

SELECT	DQ
,[42周]
,[43周]
,[44周]
,[45周]
,[46周]
,[47周]
FROM #TEMPDBF
PIVOT(SUM(TEU)FOR
周IN([42周],[43周],[44周],[45周],[46周],[47周])
)b

❽ plsql pivot怎麼使用

"pivot table" or a "crosstab report"
(Note: this page needs to be wikified)
SQL Characteristic Functions: Do it without "if", "case", or "GROUP_CONCAT".
Yes, there is use for this..."if" statements sometimes cause problems
when used in combination.

The simple secret, and it's also why they work in almost all databases, is the
following functions:

o sign (x) returns -1,0, +1 for values x < 0, x = 0, x > 0 respectively
o abs( sign( x) ) returns 0 if x = 0 else, 1 if x > 0 or x < 0
o 1-abs( sign( x) ) complement of the above, since this returns 1 only if x = 0

Quick example: sign(-1) = -1, abs( sign(-1) ) = 1, 1-abs( sign(-1) ) = 0

Data for full example:

CREATE TABLE exams (
pkey int(11) NOT NULL auto_increment,
name varchar(15),
exam int,
score int,
PRIMARY KEY (pkey)
);

insert into exams (name,exam,score) values ('Bob',1,75);
insert into exams (name,exam,score) values ('Bob',2,77);
insert into exams (name,exam,score) values ('Bob',3,78);
insert into exams (name,exam,score) values ('Bob',4,80);

insert into exams (name,exam,score) values ('Sue',1,90);
insert into exams (name,exam,score) values ('Sue',2,97);
insert into exams (name,exam,score) values ('Sue',3,98);
insert into exams (name,exam,score) values ('Sue',4,99);

mysql> select * from exams;

❾ 「Pivot」一定要和「聚合函數」一起使用嗎

PIVOT用於將列值旋轉為列名(即行轉列),在SQLServer2000可以用聚合函數配合CASE語句實現PIVOT的一般語法是:PIVOT(聚合函數(列)FOR列in(…))ASP完整語法:table_sourcePIVOT(聚合函數(value_column)FORpivot_columnIN())UNPIVOT用於將列明轉為列值(即列轉行),在SQLServer2000可以用UNION來實現完整語法:table_sourceUNPIVOT(value_columnFORpivot_columnIN())注意:PIVOT、UNPIVOT是SQLServer2005的語法,使用需修改資料庫兼容級別在資料庫屬性->選項->兼容級別改為90具體實例地址我私信發給你

❿ sqlserver2005 請問下下面pivot哪個有語法錯誤了!!

b.dwbh=d.dwbh AND
and d.rq>='2013-01-01'
1、AND 後面還有個and錯了
2、SELECT 後面有5個列,PIVOT里的IN後面有6個列