2009-03-10 11 views
0

Ich habe die folgende SQL-Anweisung:tsql: Wie kann ich an dieser Tabelle teilnehmen?

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 

Wenn ich ein Feld namens Inventory.LastUnitCost wo Inventar hinzufügen wollte einen Ersatzschlüssel hatte genannt ItemKey für die Tabelle „timitem“, wie würde ich dies dort, wo hinzufügen es würde nur das Feld LastUnitCost nach Elementschlüssel nachschlagen? Wenn es kein LastUnitCost für die Tabelle "timitem" gäbe, wäre es null.

Jedes Mal, wenn ich versuche, es in Inner Join zu timItem on Inventory.itemkey = timItem.itemkey hinzuzufügen, wirkt sich dies auf die timItemClass aus. ItemClassID-Feld, in dem einige der Catorgies nicht mehr angezeigt werden.

danke im voraus.

Antwort

2

hinzufügen Inventory.LastUnitCost zum SELECT Liste

und fügen Sie diese Zeile an das Ende der Abfrage:

dbo.Inventory LEFT OUTER JOIN dbo.timItem ON dbo.timItem.itemkey = dbo.Inventory.itemkey 
+0

Sie auch ISNULL oder COALESCE mit dem ausgewählten Element zu erhalten eine vernünftigere Standard verwenden möchten, seit dem Verlassen von Nullen kann es manchmal zu ... merkwürdigem ... Client-Code kommen. –

+0

Guter Punkt Joel. –

+0

brauchen Sie nicht eine Art von Join, um es in die Abfrage zu verknüpfen? – phill

Verwandte Themen