请教一个表转换问题

pontus 2005-08-12 02:53:12
我的表里的数据是这样的:
时间 地点 状态
2001 广州 0
2002 广州 1
2001 北京 1
2002 北京 2


但是我想把它导入另一个表中 让它的结构是:
时间 广州 北京
2001 0 1
2002 1 2

要怎么样作呢?
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunqi_790817 2005-08-12
  • 打赏
  • 举报
回复
select 时间,广州 = sum(case when 地点 = '广州' then 状态 else 0 end),北京 = sum(case when 地点 = '北京' then 状态 else 0 end), from 表 group by 时间
子陌红尘 2005-08-12
  • 打赏
  • 举报
回复
--生成测试数据
create table #t(时间 int,地点 varchar(10),状态 int)
insert into #t select 2001,'广州',0
insert into #t select 2002,'广州',1
insert into #t select 2001,'北京',1
insert into #t select 2002,'北京',2


--执行交叉表查询
declare @s varchar(8000)
set @s = ''
select @s = @s+','+地点+'=max(case when 地点='''+地点+''' then 状态 end)'
from #t group by 地点 order by 地点 desc

set @s = 'select 时间'+@s+' from #t group by 时间'

exec(@s)


--输出交叉表查询结果
/*
时间 广州 北京
---- ---- ----
2001 0 1
2002 1 2
*/
子陌红尘 2005-08-12
  • 打赏
  • 举报
回复
declare @s varchar(8000)
set @s = ''
select @s = @s+','+地点+'=max(case when 地点='''+地点+''' then 状态 end)'
from 表 group by 地点

set @s = 'select 时间'+@s+' from 表 group by 时间'

exec(@s)
Dreamnest 2005-08-12
  • 打赏
  • 举报
回复
搜索下“交叉表”信息,就可以找到答案了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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