一维表格转二维表格的问题,请指点

shumark 2008-12-31 10:03:13
Tbale1
----------
PId name sex
1 aaa 1
2 bbb 0
3 ccc 1
4 ddd 0
5 eee 1

Table2
---------
CId Pid Num Year
1 2 200 2000
2 2 240 2001
3 2 20 2002
4 2 230 2003
5 3 100 2000
6 3 140 2001
7 3 10 2002

---------需要的结果是:
year bbb ccc
2000 200 100
2001 240 140
2002 20 10
2003 230 0(没有数据,可以空或者是0)

请高手指点!

...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mcfly_SJ 2009-03-24
  • 打赏
  • 举报
回复
受教了,多谢
shumark 2009-01-02
  • 打赏
  • 举报
回复
create table Table1 (PId int,name varchar(10),sex int)
insert into Table1 values(1 ,'aaa' ,1)
insert into Table1 values(2 ,'bbb' ,0)
insert into Table1 values(3 ,'ccc' ,1)
insert into Table1 values(4 ,'ddd' ,0)
insert into Table1 values(5 ,'eee' ,1)
create table Table2(CId int, Pid int, Num int, [Year] int)
insert into table2 values(1 , 2 , 200, 2000)
insert into table2 values(2 , 2 , 240, 2001)
insert into table2 values(3 , 2 , 20 , 2002)
insert into table2 values(4 , 2 , 230, 2003)
insert into table2 values(5 , 3 , 100, 2000)
insert into table2 values(6 , 3 , 140, 2001)
insert into table2 values(7 , 3 , 10 , 2002)
go


select Table2.[year],
sum(case when table1.[name]= 'bbb' then Table2.Num else 0 end) As bbb,
sum(case when table1.[name] = 'ccc' then Table2.Num else 0 end) As ccc
from Table2
inner join table1 on table1.PID = Table2.PID
group by Table2.[year]
skeljy 2009-01-01
  • 打赏
  • 举报
回复
mark
mengxj85 2009-01-01
  • 打赏
  • 举报
回复
Up
canyqf 2008-12-31
  • 打赏
  • 举报
回复
哦,不好意思,上面写错了一些东西,还忽略了关键字。
修改一下,这个查询得到就是结果:


select Table2.[year],
sum(case when Tbale1.[name] = 'bbb' then Table2.Num else 0 end) As bbb,
sum(case when Tbale1.[name] = 'ccc' then Table2.Num else 0 end) As ccc
from Table2
inner join Tbale1 on Tbale1.PID = Table2.PID
group by Table2.[year]
canyqf 2008-12-31
  • 打赏
  • 举报
回复
还指点什么?查一下就是结果...
shumark 2008-12-31
  • 打赏
  • 举报
回复
本人sql水平不高,请高人指点。。
canyqf 2008-12-31
  • 打赏
  • 举报
回复

select Table2.year,
sum(case when Table1.name = 'bbb' then Table1.Num else 0 end) As bbb,
sum(case when Table1.name = 'ccc' then Table1.Num else 0 end) As ccc
from Table2
inner join Table1 on Table1.PID = Table2.PID
group by Table2.year

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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