当前位置:首页 » 编程语言 » 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个列