当前位置:首页 » 编程语言 » 列变行sql

列变行sql

发布时间: 2022-07-19 09:50:48

A. 如何把sql的列值变成行值

比如:有张学生成绩表(tb)如下:
Name Subject Result
张三 语文74
张三 数学83
张三 物理93
李四 语文74
李四 数学84
李四 物理94

代码如下:
create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)

insert into tb(Name , Subject , Result) values(张三 , 语文 , 74)
insert into tb(Name , Subject , Result) values(张三 , 数学 , 83)
insert into tb(Name , Subject , Result) values(张三 , 物理 , 93)
insert into tb(Name , Subject , Result) values(李四 , 语文 , 74)
insert into tb(Name , Subject , Result) values(李四 , 数学 , 84)
insert into tb(Name , Subject , Result) values(李四 , 物理 , 94)
go

B. sql 列转行

CREATE TABLE T1(A NUMBER,
b NUMBER,
c NUMBER,
d NUMBER,
e NUMBER);
insert into t1 values(1,2,3,4,5);
select * from t1;
select decode(A,1,'A',null) KEY ,decode(A,1,1,null) VALUE
from t1
union all
select decode(B,2,'B',null),decode(B,2,2,null)
from t1
union all
select decode(C,3,'C',null),decode(C,3,3,null)
from t1
union all
select decode(D,4,'D',null),decode(D,4,4,null)
from t1
union all
select decode(E,5,'E',null),decode(E,5,5,null)
from t1;

C. sql列转成行的方法,

汗 Oracle!我贴个MS-SQL05的 谁来转换下
if not object_id('tb') is null
drop table tb
go
create table tb(uuid int,A int,B int,C int)
go
insert into tb values(1,100,200,300)
insert into tb values(2,120,220,320)

declare @sql varchar(8000)
select @sql=isnull(@sql,'select uuid,''A''as [name],A as[col] from tb ')+' union all select uuid,'''+name+''','+name+' from tb'
from syscolumns where id=object_id('tb') and name not in('uuid','A')
set @sql=@sql+' order by 1,2'
exec(@sql)
uuid name col
----------- ---- -----------
1 A 100
1 B 200
1 C 300
2 A 120
2 B 220
2 C 320

(6 行受影响)

D. SQL语句如何列变行

select 字段名按照你要求的排序就行了

select a,b,c from tableName 那么输出就是 abc对应的顺序

E. sql列变行;

declare@sqlvarchar(8000)
set@sql='selectsbordas'+'城市'
select@sql=@sql+',max(casesmonthwhen'''+smonth+'''thensvalueelse0end)['+smonth+']'
from(selectdistinctsmonthfromb)asa
set@sql=@sql+'frombgroupbysbord'
exec(@sql)

F. sql把列变成行

可以用pivot table

G. 如何将列变成行 sql server

可以使用以下SQL语句取出来:
select hsname from sum1 group by hsname
把需要的都建上,不需要的sum到其它中就行了。
纵横转换就是把纵向的有限名称值转为列名:这就是转置的本质。

H. sql语句列转行

主要应用case语句来解决行转列的问题
行转列问题主要分为两类
1)简单的行转列问题:
示例表:
id
sid
course
result
1
2005001
语文
80.0
2
2005001
数学
90.0
3
2005001
英语
80.0
4
2005002
语文
56.0
5
2005002
数学
69.0
6
2005002
英语
89.0
执行
select
sid,语文=isnull(sum(case
course
when
'语文'
then
result
end),0),
数学=isnull(sum(case
course
when
'数学'
then
result
end),0),
英语=isnull(sum(case
course
when
'英语'
then
result
end),0)
from
result
group
by
sid
order
by
sid
得出结果
sid
语文
数学
英语
2005001
80.0
90.0
80.0
2005002
56.0
69.0
89.0

I. sql语句怎么把列变成行

create table rotatetable1 (序号 int,company char(66),box_weight char(12),废塑料numeric(10,2)),废五金 numeric(10,2)),废钢铁 numeric(10,2)),废纸 numeric(10,2)),废有色 numeric(10,2)),废纤维 numeric(10,2)),其它 numeric(10,2)),合计 numeric(10,2)));
insert into rotatetable1(company,box_weight) select name ,'weight' from sum1 group by name;
insert into rotatetable1(company,box_weight) select name ,'box' from sum1 group by name;
update rotatetable1 set 废塑料=box from sum1as a where a.name=rotatetable1.company and box_weight='box' and hsname='废塑料';
update rotatetable1 set 废塑料=weight from sum1as a where a.name=rotatetable1.company and box_weight='weight' and hsname='废塑料';
::: :::
update rotatetable1 set 其它=box from sum1as a where a.name=rotatetable1.company and box_weight='box' and hsname='其它';
update rotatetable1 set 其它=weight from sum1as a where a.name=rotatetable1.company and box_weight='weight' and hsname='其它';
::: :::
update rotatetable1 set 合计=废塑料+废五金+废钢铁+废纸+废有色+废纤维+其它;

(所有涉及表的行列转换均可按照这种方式实现。)

热点内容
存储卡不能格式化怎么办 发布:2025-02-01 06:02:55 浏览:690
scratch编程网站 发布:2025-02-01 05:51:27 浏览:395
安卓怎么更好用 发布:2025-02-01 05:45:38 浏览:146
ps如何存储多页为pdf 发布:2025-02-01 05:44:15 浏览:32
预编译和预处理区别 发布:2025-02-01 05:30:42 浏览:965
怎么改变网络服务器 发布:2025-02-01 05:24:55 浏览:602
华为云服务器可以装软件吗 发布:2025-02-01 05:20:29 浏览:346
为什么ios比安卓稳定 发布:2025-02-01 05:17:15 浏览:668
农村社保卡密码多少 发布:2025-02-01 05:17:05 浏览:745
android下拉刷新通用 发布:2025-02-01 05:03:51 浏览:906