我自己在Report Builder6.0里面做报表写的SQL语句SELECT 
                A.ORDSEQ, A.ORDNO, A.CTRPTY,
                B.ITMNO, B.PRD, B.UNIT,
                C.CLNO, C.CL,
                D.SZNO, D.SZ,
                E.SHPNO, E.CRCY,
                F.QTY,
                R0.STGNO, R0.QTY STGQTY, R0.QTY/F.QTY*100  PERCENT,
                R1.BLSEQ,
                R2.BLNO, R2.REGDT,
                R4.CUSTPRC, R0.QTY*R4.CUSTPRC AMT,
                R5.BLNO SMDNBLNO
FROM      ORD A, ORDITM B, ORDITMCL C, ORDITMSZ D, ORDSHP E, ORDITMDTL F,
                STGITMDTL R0, BLPCK R1, BL R2, BLDTL R4, BL R5
WHERE   A.ORDSEQ=B.ORDSEQ
AND         A.ORDSEQ=C.ORDSEQ
AND         A.ORDSEQ=D.ORDSEQ
AND         A.ORDSEQ=E.ORDSEQ
AND         A.ORDSEQ=F.ORDSEQ
AND         A.ORDSEQ=R0.ORDSEQ(+)
AND         A.ORDSEQ=R4.ORDSEQ(+)
AND         B.ITMNO=C.ITMNO
AND         B.ITMNO=D.ITMNO
AND         B.ITMNO=F.ITMNO
AND         B.ITMNO=R0.ITMNO
AND         B.ITMNO=R4.ITMNO
AND         C.CLNO=F.CLNO
AND         C.CLNO=R0.CLNO
AND         D.SZNO=F.SZNO
AND         D.SZNO=R0.SZNO
AND         E.SHPNO=F.SHPNO
AND         E.SHPNO=R4.SHPNO
AND         R0.STGNO=R1.STGNO(+)
AND         R1.BLSEQ=R2.BLSEQ(+) 
AND         R4.BLSEQ=R5.BLSEQ(+)
AND         A.ORDNO='SP10-1782'应为不会用Report Builder,就把语句放在vs2008里面执行,vs把原来的sql编译成SELECT     A.ORDSEQ, A.ORDNO, A.CTRPTY, B.ITMNO, B.PRD, B.UNIT, C.CLNO, C.CL, D.SZNO, D.SZ, E.SHPNO, E.CRCY, F.QTY, R0.STGNO, R0.QTY AS STGQTY, 
                      R0.QTY / F.QTY * 100 AS PERCENT, R1.BLSEQ, R2.BLNO, R2.REGDT, R4.CUSTPRC, R0.QTY * R4.CUSTPRC AS AMT, R5.BLNO AS SMDNBLNO
FROM         DBOWN.ORD A INNER JOIN
                      DBOWN.ORDITM B ON A.ORDSEQ = B.ORDSEQ INNER JOIN
                      DBOWN.ORDITMCL C ON A.ORDSEQ = C.ORDSEQ AND B.ITMNO = C.ITMNO INNER JOIN
                      DBOWN.ORDITMSZ D ON A.ORDSEQ = D.ORDSEQ AND B.ITMNO = D.ITMNO INNER JOIN
                      DBOWN.ORDSHP E ON A.ORDSEQ = E.ORDSEQ INNER JOIN
                      DBOWN.ORDITMDTL F ON A.ORDSEQ = F.ORDSEQ AND B.ITMNO = F.ITMNO AND C.CLNO = F.CLNO AND D.SZNO = F.SZNO AND 
                      E.SHPNO = F.SHPNO LEFT OUTER JOIN
                      DBOWN.STGITMDTL R0 ON A.ORDSEQ = R0.ORDSEQ AND B.ITMNO = R0.ITMNO AND C.CLNO = R0.CLNO AND D.SZNO = R0.SZNO LEFT OUTER JOIN
                      DBOWN.BLDTL R4 ON A.ORDSEQ = R4.ORDSEQ AND B.ITMNO = R4.ITMNO AND E.SHPNO = R4.SHPNO LEFT OUTER JOIN
                      DBOWN.BLPCK R1 ON R0.STGNO = R1.STGNO LEFT OUTER JOIN
                      DBOWN.BL R2 ON R1.BLSEQ = R2.BLSEQ LEFT OUTER JOIN
                      DBOWN.BL R5 ON R4.BLSEQ = R5.BLSEQ
WHERE     (A.ORDNO = 'SP10-1782')结果上面的在Report Builder里面执行的数据结果就一条数据:
194798 SP10-1782 L0058 1 S093-02214 PCS 3 152 BROWN 2 M 1 HKD 40 45350 1 2.50 216103 SR10-0337 20/5/2010 70 70 SD10S-0255后面的在vs里面执行结果是4条语句:
194798 SP10-1782 L0058 1 S093-02214 PCS 3 152 BROWN 3 L 1 HKD 40 NULL NULL NULL NULL NULL NULL 70 NULL SD10S-0255
194798 SP10-1782 L0058 1 S093-02214 PCS 3 152 BROWN 1 S 1 HKD 30 NULL NULL NULL NULL NULL NULL 70 NULL SD10S-0255
194798 SP10-1782 L0058 1 S093-02214 PCS 3 152 BROWN 2 M 1 HKD 40 45350 1 2.50 216103 SR10-0337 20/5/2010 70 70 SD10S-0255
194798 SP10-1782 L0058 1 S093-02214 PCS 3 152 BROWN 4 XL 1 HKD 10 NULL NULL NULL NULL NULL NULL 70 NULL SD10S-0255
最后我把后面的SQL语句放Report Builder里面执行 ,结果也是4条;
请教下是什么原因造成的????     哪有相关资料学习下???

解决方案 »

  1.   

    是不是 和NULL 有什么关系呢 呵呵猜的  
      

  2.   


    应该就是和null 和外连接有关系
      就是不知道要怎么写才好了  是什么原因
      

  3.   

    结果试出来了
    原来我自己关联的表有问题,  SELECT 
                    A.ORDSEQ, A.ORDNO, A.CTRPTY,
                    B.ITMNO, B.PRD, B.UNIT,
                    C.CLNO, C.CL,
                    D.SZNO, D.SZ,
                    E.SHPNO, E.CRCY,
                    F.QTY,
                    R0.STGNO, R0.QTY STGQTY, R0.QTY/F.QTY*100  PERCENT,
                    R1.BLSEQ,
                    R2.BLNO, R2.REGDT,
                    R4.CUSTPRC, R0.QTY*R4.CUSTPRC AMT,
                    R5.BLNO SMDNBLNO
    FROM      ORD A, ORDITM B, ORDITMCL C, ORDITMSZ D, ORDSHP E, ORDITMDTL F,
                    STGITMDTL R0, BLPCK R1, BL R2, BLDTL R4, BL R5
    WHERE   A.ORDSEQ=B.ORDSEQ
    AND         A.ORDSEQ=C.ORDSEQ
    AND         A.ORDSEQ=D.ORDSEQ
    AND         A.ORDSEQ=E.ORDSEQ
    AND         A.ORDSEQ=F.ORDSEQ
    AND         F.ORDSEQ=R0.ORDSEQ(+)
    AND         A.ORDSEQ=R4.ORDSEQ(+)
    AND         B.ITMNO=C.ITMNO
    AND         B.ITMNO=D.ITMNO
    AND         B.ITMNO=F.ITMNO
    AND         F.ITMNO=R0.ITMNO(+)
    AND         B.ITMNO=R4.ITMNO
    AND         C.CLNO=F.CLNO
    AND         F.CLNO=R0.CLNO(+)
    AND         D.SZNO=F.SZNO
    AND         F.SZNO=R0.SZNO(+)
    AND         E.SHPNO=F.SHPNO
    AND         E.SHPNO=R4.SHPNO
    AND         R0.STGNO=R1.STGNO(+)
    AND         R1.BLSEQ=R2.BLSEQ(+) 
    AND         R4.BLSEQ=R5.BLSEQ(+)
    AND         A.ORDNO='SP10-1782';
     原来红色的地方都关联的A表订单, 现在改成订单详细,
    就能够出来我要的数据了,    
      

  4.   

    第一条语句都是inner join 而第二天语句用了left join 语句不一样,查询的结果也就不一样,与编译环境无关