Pytanie : SQL Zapytanie Problem

I pytać >
1 ile materiał my używać w jeden miesiąc the SQL database.

I móc wszystkie the na najwyższym szczeblu część the następujący code.
1:
2:
3:
4:
5:
6:
7:
SELECT InvMovements.StockCode JAKO StockCode, SUMA (InvMovements.TrnQty) JAKO QTY
OD InvMovements WEWNĘTRZNY ŁĄCZYĆ
                      InvMaster NA InvMovements.StockCode = InvMaster.StockCode
DOKĄD (InvMovements.EntryDate MIĘDZY KONWERTYTA (DATETIME, "2010-05-31 00:00: 00", 102) I NAWRACAĆ (DATETIME, "2010-06-27 00:00: 00", 102)) I 
                      (InvMovements.TrnType = "R ") I (InvMaster.ProductClass WEWNĄTRZ ("PDM", "PRM", "TM", "PM "))
GRUPA InvMovements.StockCode
ROZKAZ InvMovements.StockCode


This wracać the partnumber (stockcode) i the QTY fabrykować dla the month.
I then potrzeba the bom stół the materiał używać dla the parts.
The bom stół mieć the następujący struktura:
ParentPart
Component
QtyPer

The problem być można dla jakaś dawać ParentPart the Składnik można także robić robić kilka parts.
e.g
ParentPart xxx zrobić Składnik YYYY i uses QtyPer 12
ParentPart xxx zrobić Składnik ZZZZ i uses QtyPer 2
ParentPart xxx zrobić Składowy WWW i uses QtyPer 3

The problem I mieć być Składnik ZZZZ zrobić w górę of
ParentPart ZZZZ zrobić Składowy aaaa i uses QtyPer 4
ParentPart ZZZZ zrobić Składowy bbbb i uses QtyPer 7

For the przykład składowy I potrzebować return
ParentPart xxx
uses
Part YYYY Qty 12
Part aaaa Qty 8
Part bbbb Qty 14
Part WWWW Qty 3

and wtedy mnożyć the indywidualny Część QTY the QtyPer wracać w the oryginał SQL.

Odpowiedź : SQL Zapytanie Problem

wybrany X.StockCode [topLevelPart], X.Qty [topQty],
      Coalesce (E.Component, D.Component, C.Component, B.Component, A.Component) [lowerLevelPart],
      ISNULL (E.QtyPer, 1)*ISNULL (D.QtyPer, 1)*ISNULL (C.QtyPer, 1)*ISNULL (B.QtyPer, 1)*ISNULL (A.QtyPer, 1)*X.Qty [Qty]
od (
      WYBRANY InvMovements.StockCode JAKO StockCode, SUMA (InvMovements.TrnQty) JAKO QTY
      OD InvMovements
      WEWNĘTRZNY ŁĄCZYĆ InvMaster NA InvMovements.StockCode = InvMaster.StockCode
      DOKĄD (InvMovements.EntryDate MIĘDZY KONWERTYTA (DATETIME, "2010-05-31 00:00: 00", 102)
                                                        I KONWERTYTA (DATETIME, "2010-06-27 00:00: 00", 102))
        I (InvMovements.TrnType = "R ") I (InvMaster.ProductClass WEWNĄTRZ ("PDM", "PRM", "TM", "PM "))
      GRUPA InvMovements.StockCode
) X
wewnętrzny łączyć BOM A na A.ParentPart = X.StockCode
lewica łączyć BOM B na B.ParentPart = A.Component
lewica łączyć BOM C na C.ParentPart = B.Component
lewica łączyć BOM D na D.ParentPart = C.Component
lewica łączyć BOM E na E.ParentPart = D.Component
ROZKAZ X.StockCode
Inne rozwiązania  
 
programming4us programming4us