你的级联的层次条件好像不全...我写着写着看不明白条件了...把个草本贴上来了算..
----------------------------------------------------------------------
USE PUBS
if exists(select * from sysobjects where name='Tb' and xtype='U') drop table Tb
GO
--生成测试用数据,为SELECT初始环境
CREATE TABLE Tb(ID int,bID int, aID int, text varchar(10))
INSERT INTO Tb SELECT 1,1,1,'1111'
UNION ALL SELECT 2,2,1,'2222'
UNION ALL SELECT 3,1,1,'3333'
UNION ALL SELECT 4,2,1,'4444'select * from Tb
GO
--此处为用来查询的SELECT语句
--SELECT  * FROM Tb A,Tb B--A.text 标题,B.text 内容 SELECT *
FROM (SELECT * FROM TB WHERE BID=AID)A,(SELECT * FROM TB WHERE BID<>AID) BGO--删除测试散数据
DROP TABLE Tb/* -- 结果 --ID          bID         aID         text       ID          bID         aID         text       
----------- ----------- ----------- ---------- ----------- ----------- ----------- ---------- 
1           1           1           1111       2           2           1           2222
1           1           1           1111       4           2           1           4444
3           1           1           3333       2           2           1           2222
3           1           1           3333       4           2           1           4444(所影响的行数为 4 行)*/ -- 完成 --

解决方案 »

  1.   

    Create Table A
    (ID Int)
    Insert A Select 1
    Create Table B
    (ID Int,
     aID Int,
     [text] Nvarchar(10))
    Insert B Select 1,   1,  N'标题'
    Union All Select 2,   1,  N'内容'
    Create Table C
    (ID Int,
     bID Int,
     aID Int,
     [text] Nvarchar(10))
    Insert C Select 1,   1,   1,  '1111'
    Union All Select 2,   2,   1,  '2222'
    Union All Select 3,   1,   1,  '3333'
    Union All Select 4,   2,   1,  '4444'
    GO
    Create View V_List
    As
    Select C.ID,C.bID,B.[text] As Btext ,C.aID,C.[text] From C Inner Join B On C.bID=B.ID
    GO
    --Select *From V_List
    GO
    Declare @S Nvarchar(4000)
    Select @S=''
    Select @S=@S+',Max(Case Btext When N'''+[text]+ N''' Then [text] Else '''' End) As '+[text]
    From B Order By ID
    Select @S='Select '+Stuff(@S,1,1,'')+' From V_List Group By (ID+1)/2'
    EXEC(@S)
    GO
    Drop Table A,B,C
    Drop View V_List
    GO
    --Result
    /*
    标题 内容
    1111 2222
    3333 4444
    */
      

  2.   

    啊树果然是牛人!
    GROUP BY (ID+1)/2 也能想到.
    学习了.
      

  3.   

    再讨论一下
    表c的结构
    ID bID aID text
    1   1   1  1111
    2   2   1  2222
    3   1   1  3333
    4   2   1  4444aID 四个值都是1,这样的结果好像是一篇文章对应多个标题和多份内容,有冲突.
    楼主请现身说一下表设计的愿意.如果改为这样就是一篇文章对一个标题和一份内容了.
    ID bID aID text
    1   1   1  1111
    2   2   1  2222
    3   1   2  3333
    4   2   2  4444
      

  4.   

    paoluo(一天到晚游泳的鱼),强呀!
    GROUP BY (ID+1)/2
    我想问一下,即使是两行为一组的话,如果id中间有间断不连续ID,咱办?
      

  5.   

    等待paoluo(一天到晚游泳的鱼)的答复!
      

  6.   

    不明白楼主的题意.
    若我将A,B,C3个表分别定义为 版本控制表, 字段表, 版本历次更新表,则C表中的AID应分别是对A表的2个版本,则原题意的表C的AID字段各记录应为1,1,2,2,不知这样是否楼主的愿意?附查询语句drop table tbCREATE TABLE Tb(ID int,bID int, aID int, text varchar(10))
    INSERT INTO Tb SELECT 1,1,1,'1111'
    UNION ALL SELECT 9,2,1,'2222'
    UNION ALL SELECT 5,1,2,'3333'
    UNION ALL SELECT 7,2,2,'4444'
    UNION ALL SELECT 11,1,3,'5555'
    UNION ALL SELECT 2,2,3,'6666'select a.text as '标题', b.text as '内容' from (
    select * from tb a where bid=1
    ) a left outer join
     (
    select * from tb a where bid=2
    ) b 
     on a.aid = b.aid标题     内容
    1111 2222
    3333 4444
    5555 6666