表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,现在加上了。
你表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')
完全符合你的要求。
你那个表A的type有什么用?表B的数据和A又有什么关系?结果中的数据都从哪里来?和原来两个表有啥关系?
你这啥也不说,不知道你要进行什么处理哦
晕,哪有这样问问题的。。
感觉你这看起来像是把第二张表打横了,是那样的不?
数据库知识。交叉表。搜索一下。我那个罗上很多相关的知识。