表A
mid mname
11 aa
22 bb
33 cc
表B
aid, aname
1 a
2 b
3 c
4 d
5 e
表C
mid aid value
11 1 v1
11 2 v2
22 2 v3
.....
要得到的结果是:
表A.name, 表B.aname(a), 表B.aname(b), ......(将表B的行比如5行作为列 得到 表C的值 组成一个表)
aa v1 v2 ......
可能我表述的不是很清楚,有点乱,请高手指教
------解决方案--------------------
没说明白还是我没理解?
------解决方案--------------------
- SQL code
create table A(id int,[name] varchar(10))insert into Aselect 1 ,'a' union allselect 2 ,'b'gocreate table B(mid int,id int,[value] varchar(10))insert into Bselect 11 ,1 ,'v1' union allselect 11 ,2 ,'v2' union allselect 22 ,1 ,'v3' union allselect 22 ,2 ,'v4'godeclare @sql varchar(8000)set @sql = 'select mid'select @sql = @sql + ',max(case id when '+ltrim(id)+' then [value] else '''' end) as [name('+[name]+')]'from Aselect @sql = @sql + ' from B group by mid'exec(@sql)drop table A,B/***************mid name(a) name(b)----------- ---------- ----------11 v1 v222 v3 v4(2 行受影响)
------解决方案--------------------
------解决方案--------------------
再写个where
------解决方案--------------------
select 列1, 列2 ,... from where
------解决方案--------------------
我的理解,是说建立一个表C,表C的数据是表B对应数据,以及表B中id对应表A的数据,是么?希望能帮到你
select mid,(select name from 表A join 表B where A.id=B.id ) as namea,name from 表B