首页 新闻 会员 周边

数据库2个表组合成一个表。

0
[已解决问题] 解决于 2009-03-12 11:56

表A:

ID  NAME  Type

1    A          0

2    B          0

3    C          0

4    X          1

5    Y          1

6    Z          1

 

表B:

ID   A1   A2   VALUE

1    A      X      100

2    A      Y      200

3    A      Z      300

4    B      X      400

5    B      Y      500

6    B      Z      600

7    C      X      700

8    C      Y      800

9    C      Z      900

 

想要得到的结果:

NO      A      B      C

X      100   400  700

Y      200   500   800

Z      300   600   900

 

望高手指点,谢谢!表A的数据是可以添加的,所以不能写死。汗,表A写少了个Type,现在加上了。

问题补充: 抱歉,问题没说清楚。 表A中的Type表示组合的时候一个是在X轴一个是在Y轴。 表B中的A1是Y轴的ID,A2是X轴的ID。
I,Robot的主页 I,Robot | 大侠五级 | 园豆:9783
提问于:2009-02-28 13:00
< >
分享
最佳答案
0

你表B(TableB) 的部分数据来自表A(TableA),所以此处不用表A(TableA),仅用表B(TableB)就可以得到你想要的结果了,SQL语句如下:

declare @maxs nvarchar(4000)
declare @s nvarchar(4000) 
Select     @maxs=isnull(@maxs+',','')+'max('+ quotename(a1) +') as'+ quotename(a1),@s=isnull(@s+',','')+ quotename(a1)
from TableB group by a1
exec('select a2 AS NO,'+@maxs+' from (select * FROM TableB) A pivot (max([value]) for a1 in('+@s+')) B  group by  a2') 

完全符合你的要求。

| 小虾三级 |园豆:770 | 2009-03-02 15:34
其他回答(4)
0

你那个表A的type有什么用?表B的数据和A又有什么关系?结果中的数据都从哪里来?和原来两个表有啥关系?

你这啥也不说,不知道你要进行什么处理哦

丁学 | 园豆:18730 (专家六级) | 2009-03-01 05:51
0

晕,哪有这样问问题的。。

llj098 | 园豆:825 (小虾三级) | 2009-03-01 16:01
0

感觉你这看起来像是把第二张表打横了,是那样的不?

alidalee | 园豆:205 (菜鸟二级) | 2009-03-01 23:17
0

数据库知识。交叉表。搜索一下。我那个罗上很多相关的知识。

邢少 | 园豆:10926 (专家六级) | 2009-03-04 16:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册