解决方案 »

  1.   

    SELECT A.ID,A.PID,A.NR,T2.NRB,T3.NRC FROM A
    LEFT JOIN(SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN,ID,NRB FROM B)T2 ON A.ID=T2.ID
    LEFT JOIN(SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN,PID,NRC FROM C)T3 ON A.PID=T3.PID AND T2.RN=T3.RN
    SQL2005+有效
      

  2.   


    select A.*,B.NRB,C.NRC from A
    left join B on A.ID=B.ID
    left join C on A.PID=C.PID
      

  3.   

    如果1楼的sql解决不了你的问题,那你问题就出在表的设计上了
      

  4.   

    如果從數據上處理,直接使用下面的sql處理。select a.*,b.nrb,c.nrc from a,b,c where a.id = b.id and a.pid = c.pid  and right(b.nrb,1)=right(c.nrc,1)
      

  5.   

    你的SQL版本是多少呢?SQL2000没有用
    试下以下执行效果,已经如你所说了
    如果这样达不到你的要求,你提供更详细更能体现你的需要的示例数据,不然大伙都不明白;WITH A(ID,PID,NR) AS(
    SELECT 01,'aa','内容A'
    ), B(ID,NRB) AS(
    SELECT 01,'内容B1'
    UNION ALL SELECT 01,'内容B2'
    UNION ALL SELECT 01,'内容B3'
    ), C(PID,NRC) AS(
    SELECT 'aa','内容c1'
    UNION ALL SELECT 'aa','内容c2'
    UNION ALL SELECT 'aa','内容c3'
    )
    SELECT A.ID,A.PID,A.NR,T2.NRB,T3.NRC FROM A
    LEFT JOIN(SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN,ID,NRB FROM B)T2 ON A.ID=T2.ID
    LEFT JOIN(SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN,PID,NRC FROM C)T3 ON A.PID=T3.PID AND T2.RN=T3.RN