大家帮帮忙 分不够可以加

zjjhfwh 2003-05-27 04:17:14
如何把表一
id size color num
1 1 1 34
2 1 2 35
3 1 3 56

表二

colorid colorname
1 红
2 蓝
3 黄

写存储过程 显示成表三
size 红 蓝 黄
1 34 35 56


并希望能修改表三时 改表一数据

...全文
4 点赞 收藏 12
写回复
12 条回复
zjjhfwh 2003年05月28日
up
回复 点赞
zjjhfwh 2003年05月27日
up
回复 点赞
zjjhfwh 2003年05月27日
那反过来怎么做
size 红 蓝 黄
1 34 35 56

生成表一 表二

id size color num
1 1 1 34
2 1 2 35
3 1 3 56

表二

colorid colorname
1 红
2 蓝
3 黄
回复 点赞
cih1981 2003年05月27日
select Distinct isize as size,num as 黄 from tab1 where tab1.color=(select colorid from tab2 where colorname='黄')
回复 点赞
HawaiiLeo 2003年05月27日
create proc proc_sel
as
declare @sql varchar(800)
set @sql = 'select size,'
select @sql = @sql +' max(case color when '+ cast(colorid as varchar) +' then num end) as '''+ colorname +''',' from tblB
set @sql = left(@sql, len(@sql)-1) +' from tblA group by size'
print @sql
exec(@sql)
go
回复 点赞
HawaiiLeo 2003年05月27日
if object_id('tblA') is not null
drop table tblA

if object_id('tblB') is not null
drop table tblB

create table tblA(
id int,
size int,
color int,
num int
)

create table tblB(
colorid int,
colorname Nchar(1)
)
go

insert into tblA values(1, 1, 1, 34)
insert into tblA values(2, 1, 2, 35)
insert into tblA values(3, 1, 3, 56)

insert into tblB values(1, '红')
insert into tblB values(2, '蓝')
insert into tblB values(3, '黄')

if exists(select name from sysobjects where name='proc_sel' and xtype='P')
drop proc proc_sel
go

create proc proc_sel
as
declare @sql varchar(800)
set @sql = 'select'
select @sql = @sql +' max(case color when '+ cast(colorid as varchar) +' then num end) as '''+ colorname +''',' from tblB
set @sql = left(@sql, len(@sql)-1) +' from tblA group by size'
print @sql
exec(@sql)
go

exec proc_sel
回复 点赞
cih1981 2003年05月27日
我做了一下也不行,高手呢?up
回复 点赞
zjjhfwh 2003年05月27日
up
回复 点赞
zjjhfwh 2003年05月27日
to dlkfth(流氓兔)


你的"as 蓝" 指定了 如何到数据库中取
回复 点赞
zjjhfwh 2003年05月27日
那如何修改
size 红 蓝 黄
1 34 35 56---------20

id size color num
1 1 1 34
2 1 2 35
3 1 3 56--------20
回复 点赞
dlkfth 2003年05月27日
select distinct a.size ,(select num from 表一 b where a.size=b.size and b.color=1) as 红,(select num from 表一 c where a.size=c.size and c.color=2) as 蓝 ,(select num from 表一 d where a.size=d.size and d.color=3) as 蓝
from 表一 a
回复 点赞
zjjhfwh 2003年05月27日
急啊!!救救我。
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9308

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告