2012-04-25 75 views
1

如果我在第二次查询内部值时使用T3.CardCode ='AC0109',该查询工作正常,但如果使用外部查询(T3.CardCode = owt.CardCode)或(T3.CardCode = t1.CardCode),则它上升错误无法绑定多部分标识符“owt.cardcode”或“t1.cardcode”

无法绑定多部分标识符“owt.cardcode”或“t1.cardcode” PLZ帮我解决这个问题

SELECT TOP (100) PERCENT 
     owt.CardCode, 
     owt.CardName, 
     owt.DocDate, 
     owt.owtsector, 
     owt.owtzone, 
     owt.Dscription, 
     owt.owtrate, 
     owt.owtqty, 
     owt.amount, 
     ISNULL(inw.inwqty,0) AS Expr1, 
     ISNULL(inw.inwamount, 0) AS Expr2 
FROM (SELECT T1.DocDate, 
      T1.CardCode, 
      T1.CardName, 
      T2.ItemCode, 
      T2.Dscription, 
      T1.U_STTYPE, 
      T1.U_SECTOR AS owtsector, 
      T1.U_ZONE AS owtzone, 
      SUM(T2.LineTotal) AS amount, 
      SUM(T2.Quantity) AS owtqty, 
      T2.CodeBars, 
      T2.Price AS owtrate 
     FROM dbo.OWTR AS T1 
      INNER JOIN dbo.WTR1 AS T2 ON T1.DocEntry = T2.DocEntry 
     WHERE (T1.DocDate = CONVERT(DATETIME, '2012-03-16 00:00:00', 102)) 
     AND (T1.CardCode = N'ac0109') 
     AND (T1.U_STTYPE = N'OUTWARD') 
     AND (T1.U_SECTOR NOT LIKE 'wr%') 
     GROUP BY T1.DocDate, 
       T1.CardCode, 
       T1.CardName, 
       T2.ItemCode, 
       T2.Dscription, 
       T1.U_STTYPE, 
       T2.Price, 
       T1.U_SECTOR, 
       T1.U_ZONE, T2.CodeBars) AS owt 
LEFT OUTER JOIN (SELECT T3.DocDate, 
         T3.CardCode, 
         T3.CardName, 
         T3.U_STTYPE, 
         T4.ItemCode, 
         T4.Dscription, 
         SUM(T4.Quantity) AS inwqty, 
         SUM(T4.LineTotal) AS inwamount 
       FROM dbo.OWTR AS T3 
        INNER JOIN dbo.WTR1 AS T4 ON T3.DocEntry = T4.DocEntry 
       WHERE (T3.DocDate = CONVERT(DATETIME, '2012-03-16 00:00:00', 102)) 
        AND (T3.CardCode = ***owt.CardCode***) 
        AND (T3.U_STTYPE = N' inward ') 
        AND (T3.U_SECTOR NOT LIKE ' wr % ') 
       GROUP BY T3.DocDate, 
         T3.CardCode, 
         T3.CardName, 
         T4.ItemCode, 
         T4.Dscription, 
         T3.U_STTYPE) AS inw 
    ON owt.CardCode = inw.CardCode 
AND owt.DocDate = inw.DocDate 
AND owt.ItemCode = inw.ItemCode 
+0

你想让我们用这个做什么? – Arion 2012-04-25 07:32:07

+0

您使用的是什么RDBMS? – GarethD 2012-04-25 08:13:03

回答

0

的错误是在这条线的第二子查询(INW)内:

AND  (T3.CardCode = owt.CardCode) 

我觉得应该是:

AND  (T3.CardCode = T4.CardCode) 

编辑

在进一步的思考,我不认为你需要这个断言在所有的,因为它已经包含在连接条件。

+0

Infact我将在query1中得到来自用户的输入(t1.cardcode的[%1]),并在第二个查询中引用它。 – 2012-04-25 08:06:58

+0

正如我省略这种情况,我的查询现在正在工作。我非常感谢你。 – 2012-04-25 08:36:43

相关问题