sql行转列(sql行转列拼接)
本篇文章给大家谈谈sql行转列,以及sql行转列拼接对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、sql行转列
- 2、sql语句行转列 怎么转啊
- 3、sql中一对多关系的查询结果的多行转换成一行多列
- 4、sql 行变成列
- 5、sql怎样将行的值变为列,,,,
- 6、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行转列拼接的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。