日期:2014-05-19  浏览次数:20533 次

百分求SQL语句,不知道是联合查询还是行专列的问题,请高手
问题解决立即揭帖,三天内还没有解决,分给顶贴的朋友。
问题描述如下:
表A   (IDA,   NameA)   其中IDA为主键
IDA       NameA
1           namea1
2           namea2
3           namea3
4           namea4
表B   (IDB,NameB)     其中IDB为主键
IDB       NameB
1           nameb1
2           nameb2
3           nameb3
表C(IDC,IDA,IDB,State)   其中IDC为主键,IDA,IDB   为外键。State为字符型(取值范围为A,B,C)
IDC     IDA   IDB   State
1         1       1       A
2         2       1       A
3         3       1       C
4         1       2       B
5         2       2       A
6         3       2       B
7         1       3       A
8         2       3       C
9         3       3       A
10       4       3       B

希望查询到的结果为:
IDB       NameB           namea1     namea2     namea3     namea4
1           nameb1         A               A               C               '   '
2           nameb2         B               A               B               '   '
3           nameb3         A               C               A               B

------解决方案--------------------
ding
------解决方案--------------------
关注
------解决方案--------------------
--先给个静态的SQL
if object_id( 'pubs..A ') is not null
drop table A
go
create table A(IDA int,NameA varchar(10))
insert into A(IDA,NameA) values(1, 'namea1 ')
insert into A(IDA,NameA) values(2, 'namea2 ')
insert into A(IDA,NameA) values(3, 'namea3 ')
insert into A(IDA,NameA) values(4, 'namea4 ')
go

if object_id( 'pubs..B ') is not null
drop table B
go
create table B(IDB int,NameB varchar(10))
insert into B(IDB,NameB) values(1, 'nameb1 ')
insert into B(IDB,NameB) values(2, 'nameb2 ')
insert into B(IDB,NameB) values(3, 'nameb3 ')
go

if object_id( 'pubs..C ') is not null
drop table C
go

create table C(IDC int,IDA int,IDB int,State varchar(10))
insert into C(IDC,IDA,IDB,State) values(1, 1, 1, 'A ')
insert into C(IDC,IDA,IDB,State) values(2, 2, 1,