tsql: как мне присоединиться к этой таблице? - PullRequest
0 голосов
/ 10 марта 2009

У меня есть следующее заявление sql:

SELECT TOP (100) PERCENT inv.CompanyID, 
                         cust.CustID AS ClientID, 
                         cust.CustName AS CustomerName, 
                         inv.InvcKey, inv.PrimarySperKey AS SperKey, 
                         inv.TranID AS InvoiceNumber, 
                         inv.TranDate AS PostDate, 
                         sper.SperName AS SalesPersonName, 
                         inv.SalesAmt AS InvoiceSubAmount, 
                         inv.TranAmt AS InvoiceTotal, 
                         detl.ItemKey, 
                         detl.InvoiceLineKey AS dtInvoiceLineKey, 
                         detl.Description, 
                         detl.UnitCost AS calcUnitCost, 
                         detl.UnitPrice, 
                         detl.ExtAmt, 
                         (detl.UnitPrice - detl.UnitCost) * dist.QtyShipped - detl.TradeDiscAmt AS detLineGrossProfit, 
                         dbo.tPA00175.chrJobNumber AS ARJobNumber, 
                         dist.QtyShipped, 
                         dbo.timItem.ItemID AS ARItemID, 
                         dbo.timItemClass.ItemClassID AS ARItemClass,         
                         dist.TradeDiscAmt,                       
                         dbo._v_GP_SalesTerr.SalesTerritoryID

FROM         
                      dbo.tarInvoiceDetl AS detl RIGHT OUTER JOIN
                      dbo.timItem INNER JOIN
                      dbo.timItemClass ON dbo.timItem.ItemClassKey = dbo.timItemClass.ItemClassKey ON detl.ItemKey = dbo.timItem.ItemKey RIGHT OUTER JOIN
                      dbo._v_GP_SalesTerr RIGHT OUTER JOIN
                      dbo.tarInvoice AS inv INNER JOIN
                      dbo.tarCustomer AS cust ON inv.CustKey = cust.CustKey ON dbo._v_GP_SalesTerr.CustKey = cust.CustKey ON 
                      detl.InvcKey = inv.InvcKey LEFT OUTER JOIN
                      dbo.tPA00175 INNER JOIN
                      dbo.paarInvcHdr ON dbo.tPA00175.intJobKey = dbo.paarInvcHdr.intJobKey ON inv.InvcKey = dbo.paarInvcHdr.InvcKey LEFT OUTER JOIN
                      dbo.tarInvoiceLineDist AS dist ON detl.InvoiceLineKey = dist.InvoiceLineKey LEFT OUTER JOIN
                      dbo.tarSalesperson AS sper ON inv.PrimarySperKey = sper.SperKey

Если бы я хотел добавить поле с именем Inventory.LastUnitCost, где Inventory имел суррогатный ключ itemkey для таблицы "timitem", как бы я добавил это туда, где он просто будет искать поле LastUnitCost по itemkey? Если бы не было LastUnitCost, соответствующего таблице timitem, оно было бы просто нулевым.

Каждый раз, когда я пытаюсь добавить его, как во Внутреннем соединении с timItem на Inventory.itemkey = timItem.itemkey, это влияет на поле timItemClass.ItemClassID, где некоторые из каторий больше не отображаются.

спасибо заранее.

1 Ответ

2 голосов
/ 10 марта 2009

Добавить Inventory.LastUnitCost в список SELECT

и добавьте эту строку в конец запроса:

dbo.Inventory LEFT OUTER JOIN dbo.timItem ON dbo.timItem.itemkey = dbo.Inventory.itemkey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...