2009-03-10 3 views
0

私は次のSQL文を持っている:tsql:このテーブルに参加するにはどうすればいいですか?

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 

私は在庫が「timitem」テーブルに対してITEMKEYと呼ばれる代理キーを持っていたInventory.LastUnitCostと呼ばれるフィールドを追加したい場合は、どのように私はそこにどこでこれを追加しますitemkeyでLastUnitCostフィールドを検索するだけですか? timitemテーブルに対応するLastUnitCostがなかった場合、nullになります。

これは、Inner JoinのようにInventory.itemkey = timItem.itemkeyのtimItemに追加しようとするたびに、timItemClassに影響します。 ItemClassIDフィールドには、いくつかのcatorgiesが表示されなくなります。

ありがとうございます。

答えて

2

SELECTリスト

Inventory.LastUnitCostを追加し、クエリの最後に次の行を追加します。

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

ます。また、正気のデフォルトを取得するためにISNULLを使用するか、選択項目にCOALESCEしたい場合があります、ヌルを残していると、奇妙な...クライアントコードがあることがあります。 –

+0

良い点ジョエル。 –

+0

それをクエリにリンクするには何らかの結合が必要ないのですか? – phill

関連する問題