sql行转列(sql行转列拼接)

本篇文章给大家谈谈sql行转列,以及sql行转列拼接对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

sql行转列

SELECT e.NAME as name,

count(case when DATEPART(year,c.START_TIME)=2014 then 1 else null end ) as count2014,

count(case when DATEPART(year,c.START_TIME)=2015 then 1 else null end ) as count2015

from ENVI_DATA_STATISTIC_COMP c

LEFT JOIN ENVI_CITY e on e.CITY_ID=c.CITY_ID

where c.COMP_NAME like '%蓝天白云%'弯团 and INDEX_TYPE='12'

and (c.START_TIME like '%2014-08%'春闹芦 or c.START_TIME like '%2015-08%'扒带 ) and STATISTIC_TYPE='1' and c.VALID_FLAG='1'

group by name

应该是酱紫的,使用case when 转换~

[img]

sql语句行转列 怎么转啊

--声明变量

declare @sql varchar(1000),@num_data int,@num_all varchar(2000),@num_num int,@table_sql varchar(2000)

set @num_num=0

--判断并创建表

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[records]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[records]

create table records(

[id] int,

[name] varchar(50),

[sex] varchar(10),

[num] int

)

--插入数据

insert into records values(1,'tom','男',2)

insert into records values(1,'tom','男',3)

insert into records values(1,'tom','男',4)

insert into records values(1,'tom','男',5)

--全选表中数贺老据

select * from records

--全选num列数据

select num as '数据'from records

--释放游标

deallocate select_num

--为禅码升‘select num from records’建立游标

declare select_num scroll cursor for select num as 'shuju' from records

--打开游标

open select_num

--获得第一条数据

fetch next from select_num into @num_data

set @num_all=convert(varchar,@num_data) + ','

set @num_num=@num_num+1;

--如果获取成功,继续获得数据

while @@fetch_status=0

begin

fetch next from select_num into @num_data

set @num_num=@num_num+1;

set @num_all=@num_all +convert(varchar,@num_data)+','

end

--关闭游标

close select_num

print @num_num

--set @num_num=@num_num-1;

declare @i int

set @i=1

print @num_num

print @i

set @table_sql='create table numall (id int,name varchar(50),sex varchar(10)'

print @table_sql

while @num_num=1

begin

set @table_sql=@table_sql+',num'+convert(varchar,@i)+' int'

set @num_num=@num_num-1;

set @i=@i+1

end

set @table_sql=@table_sql+')'

print @table_sql

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[numall]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[numall]

exec(@table_sql)

declare @insert_sql varchar(2000)

set @insert_sql='insert into numall values(1,'+'''tom'','+'''男'''

print @insert_sql

open select_num

--获得第一条数据

fetch next from select_num into @num_data

set @insert_sql=@insert_sql+','+convert(varchar,@num_data)

--如果获取成功模胡,继续获得数据

while @@fetch_status=0

begin

fetch next from select_num into @num_data

set @insert_sql=@insert_sql+','+convert(varchar,@num_data)

end

set @insert_sql=@insert_sql+')'

print @insert_sql

exec(@insert_sql)

--insert into numall values(1,'tom','男',2,3,4,5,5)

select * from numall

试试吧,数据虽然有点出入,但已经说明问题了!!!

sql中一对多关系的查询结果的多行转换成一行多列

1、携腊创建测试表,

create table test_fee(userid number, feeid number, fee number);

2、插入测试数据

insert into test_fee values(1,1001,80);

insert into test_fee values(1,1002,70);

insert into test_fee values(1,1003,90);

insert into test_fee values(1,1004,60);

insert into test_fee values(2,1001,99);

insert into test_fee values(2,1002,66);

insert into test_fee values(2,1001,55);

3、查枣隐耐询表中所有记录,select t.*, rowid from test_fee t,

4、编写sql,按userid汇总,根据不同的feeid,进行凳春行转列汇总,

select userid,

     sum(case when feeid = 1001 then fee else 0 end) as fee_1001,

     sum(case when feeid = 1002 then fee else 0 end) as fee_1002,

     sum(case when feeid = 1003 then fee else 0 end) as fee_1003,

     sum(case when feeid = 1004 then fee else 0 end) as fee_1004

from test_fee t

group by userid

sql 行变成列

楼主 声明一个变量 把列传给变量即可 行转列 有专门的函数的

下面竖洞是课程表 有列课程和分数

你扮早参考这个例子 就可以了

declare @sql varchar(8000)=‘’

select @sql = isnull(@sql + '],[' , ''余缺枯) + 课程 from tb group by 课程

set @sql = '[' + @sql + ']'

exec ('select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b')

sql怎样将行的值变为列,,,,

方法/步骤

首先我们建立一张表,名为RToC,各个字段的设计如下图,分别是name,course,score,表示肢帆蔽姓名,成绩与分数,如图所示。

我们往表中加入数据,分别添加小明与小花的语文和数学成绩,如图所示。

接下来,我们要进行行列转换,列应该是name,语文,数学。我们首先要考虑是如何得到列名,我们可以通过轿此分组得到课程名称。如图所示,我们通过分组语句,从查询结果我们可以看出课程名的拼接字符串。

接下来,关键的行转列的函数pivot出场了,通过这个函历州数我们把分数填充到转换的列语文、数学的列值。

我们运行后,可以得到行转列的结果,如下图所示。

通过以上几个步骤,我们就可以轻松的实现行列转换了。同样,我们如果要把列转换成行, 应该怎么做呢?同样我们可以采用unpivot函数轻松实现。

SQL表数据行转列的处理,求SQL大神帮忙解答下

我说一下我的想法,将收费项目的分类提取出来,用这些和组团构造临时表,再将查到的结高腔果存入对应的表,就可以获得这样的结果

如果只有物业管理费和电费,戚族衫可以使用如下代码:

select z.组团,w.物业费,d.电费 from

(select 组团 from 表名 group by 组团)z,

(select 组团,金额 as 物业费 from 表名 where 收费项目='物业管理' group by 组团) w,

(select 组团,金额 as 电费 from 表名 where 收费项目='电费' group by 组团) d

where z.组团 = w.组团 and z.组团 = d.组团 ;

大功告成,一开始是我太在意费用类别了,万一还弄个学费穗如,还得加,所以建议楼主使用临时表,其实用我上面的思想去做,就so easy了

关于sql行转列和sql行转列拼接的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表