急救,数据库表中这样把横向记录纵向显示

mark2006 2008-10-15 04:11:55
原表记录如下:
仓库 数量 名称 规格 辅助属性
上海仓库 10.0000000000 电线1 a aa
电线仓库 100.0000000000 电线2 b bb
北京仓库 15.0000000000 电线3 c cc
南京仓库 10.0000000000 电线4 d dd


怎样变成:
仓库 上海仓库 电线仓库 北京仓库 南京仓库
数量 10.0000000000 100.0000000000 15.0000000000 10.0000000000
名称 电线1 电线2 电线3 电线4
规格 a b c d
辅助属性 aa bb cc dd

行列不固定,怎样用SQL 语句实现?
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2008-10-24
  • 打赏
  • 举报
回复
if object_id('[s]') is not null drop table [s]
create table [s] (name varchar(4),kemu varchar(4),score int)
insert into [s]
select '张三','语文',80 union all
select '张三','数学',89 union all
select '李四','语文',71 union all
select '王五','政治',89


--动态sql
declare @sql varchar(8000)
set @sql='select name'
select @sql=@sql+',['+kemu+']=max(case kemu when '''+kemu+''' then score else null end)'
from (select distinct kemu from s)a
exec(@sql+' from s group by name')

--静态sql
select name,
[数学]=max(case kemu when '数学' then score else null end),
[语文]=max(case kemu when '语文' then score else null end),
[政治]=max(case kemu when '政治' then score else null end)
from s group by name
JYR520 2008-10-24
  • 打赏
  • 举报
回复
交叉表的实现有不少帖子,你可以看看
zhangguochen 2008-10-24
  • 打赏
  • 举报
回复
列数据不固定转换不了的
cqqjzb 2008-10-20
  • 打赏
  • 举报
回复
create table #test ( 时间 varchar(10),姓名 varchar(20), 得分 int)
insert into #test select

'200302' , 'qqqq' , 10 union all select
'200302' , 'zzzz' , 20 union all select
'200303' , 'qqqq' , 15 union all select
'200303' , 'zzzz' , 20 union all select
'200303' , 'jjjj', 10


declare @sql varchar(8000)
set @sql = 'select 时间'
select @sql = @sql + ',max(case 姓名 when '''+姓名+''' then 得分 end) ['+姓名+']'
from (select distinct 姓名 from #test ) a

select @sql = @sql+' from #test group by 时间'
print @sql
exec(@sql)
--结果
时间 jjjj qqqq zzzz
---------- ----------- ----------- -----------
200302 NULL 10 20
200303 10 15

yygyogfny 2008-10-16
  • 打赏
  • 举报
回复
又是动态行列转换,
中国风 2008-10-16
  • 打赏
  • 举报
回复
用回復的方法就是動態執行的
只需要確定表名和要轉換的列名就行了
中国风 2008-10-16
  • 打赏
  • 举报
回复
這不是回答過了

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧