数据库行列转换sql语句实例

数据库行列转换sql语句实例
标签: Sql 数据库 行列转换 拼接 交叉表

1.拼接
create table t
(tableid nchar(30))
insert t
select 'T1' union all
select 'T2' union all
select 'T3' union all
select 'T4' union all
select 'T5' union all
select 'T6'
如图:

go
create function f_he()
returns @t table(col varchar(50))
as
begin
   declare @sql varchar(50)
   set @sql=''
   select @sql=@sql+ltrim(rtrim(tableid)) from t
   insert @t values (@sql)
return
end

go
select * from t
select * from dbo.f_he()
结果:


drop function f_he
drop table t
2.求和
现有表table结构如下:
a1(病房)     a2(人数)     a3(1代表爱滋病、1代表感冒、3代表骨折)
1001              5                1
1001              6                2
1001              7                3

为了得到以下查询信息:
  病房     爱滋病人数    感冒人数      骨折人数
1001           5                     6                 7

交叉表语句的实现:
--用于:交叉表的列数是确定的
select a1,
sum(case a3 when 1 then a2 else 0 end) as '爱滋病',
sum(case a3 when 2 then a2 else 0 end) as '感冒',
sum(case a3 when 3 then a2 else 0 end) as '骨折'
from table
group by a1

你可能感兴趣的:(sql; 拼接)