Frage : Sql-Fragen-Problem

Ich bin gebeten worden, herauszufinden, wie viel Material, das wir in einem Monat verwendet haben, indem wir den SQL database.

I abfragten, alle Seitenteile indem die Anwendung des folgenden code.
1 zurückbringen kann:
2:
3:
4:
5:
6:
7:
SELECT InvMovements.StockCode ALS StockCode, SUMME (InvMovements.TrnQty) ALS Menge
VON INNEREM InvMovements VERBINDEN
                      InvMaster AUF InvMovements.StockCode = InvMaster.StockCode
WO (InvMovements.EntryDate ZWISCHEN BEKEHRTEM (DATUM/UHRZEIT, „00:00 2010-05-31: 00“, 102) UND WANDELN UM (DATUM/UHRZEIT, „00:00 2010-06-27: 00“, 102)) UND 
                      (InvMovements.TrnType = „R ") UND (InvMaster.ProductClass INNEN („PDM“, „PRM“, „TM“, „P.M. "))
GRUPPE DURCH InvMovements.StockCode
AUFTRAG DURCH InvMovements.StockCode


This bringt die Teilenummer (stockcode) zurück und die Menge, die für das month.
I dann Notwendigkeit, auf die bom Tabelle zurückzugreifen, um die Materialien zurückzubringen benutzt werden für die parts.
The bom Tabelle hergestellt wird, hat die folgende Struktur:
ParentPart
Component
QtyPer

The Problem ist das für jedes mögliches gegebene ParentPart, das der Bestandteil einige parts.
e.g.
ParentPart xxx auch bestehen konnte wird gebildet vom Bestandteil YYYY und Gebrauch QtyPer 12
ParentPart xxx wird vom Bestandteil ZZZZ gebildet und Gebrauch QtyPer 2
ParentPart xxx wird von Teil-WWW gebildet und Gebrauch QtyPer 3

The Problem ich habe, ist Bestandteil ZZZZ ist gebildetes of
ParentPart ZZZZ wird gebildet vom Teilaaaa und Gebrauch QtyPer 4
ParentPart ZZZZ wird vom Teilbbbb gebildet und Gebrauch QtyPer 7

For das Beispiel oben würde ich return
ParentPart xxx
uses
Part YYYY Menge 12
Part aaaa Menge 8
Part bbbb Menge 14
Part WWWW benötigen Menge 3

and multiplizieren dann die Einzelteil Menge mit dem QtyPer, das in das ursprüngliche SQL.

zurückgebracht wird

Antwort : Sql-Fragen-Problem

X.StockCode [topLevelPart], X.Qty vorwählen [topQty],
      Verschmelzen (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 [Menge]
von (
      InvMovements.StockCode ALS StockCode, SUMME (InvMovements.TrnQty) VORWÄHLEN ALS Menge
      VON InvMovements
      INNER InvMaster AUF VERBINDEN InvMovements.StockCode = InvMaster.StockCode
      WO (InvMovements.EntryDate ZWISCHEN BEKEHRTEM (DATUM/UHRZEIT, „00:00 2010-05-31: 00“, 102)
                                                        UND BEKEHRTER (DATUM/UHRZEIT, „00:00 2010-06-27: 00“, 102))
        UND (InvMovements.TrnType = „R ") UND (InvMaster.ProductClass INNEN („PDM“, „PRM“, „TM“, „P.M. "))
      GRUPPE DURCH InvMovements.StockCode
) X
inner BOM A auf verbinden A.ParentPart = X.StockCode
links verbinden BOM B auf B.ParentPart = A.Component
links verbinden BOM C auf C.ParentPart = B.Component
links verbinden BOM D auf D.ParentPart = C.Component
links verbinden BOM E auf E.ParentPart = D.Component
AUFTRAG DURCH X.StockCode
Weitere Lösungen  
 
programming4us programming4us