Ich habe verschiedene Produktseriennummern in einer Tabelle ProdHistory
, die, wie der Tabellenname suggeriert, Produktionsverlauf enthält.
Zum Beispiel habe ich Produktserien SER001
, die Teile mit einer eigenen Seriennummer verwendet.
Wir produzieren auch diese Teile verwendet also die gleiche Tabelle ProdHistory
, um seine Unterteile zu verfolgen.
Das gleiche gilt für die Unterteile und wenn es Unterteile hat.Rekursive Abfrage aus der gleichen Tabelle
Beispieltabelle
IF OBJECT_ID('tempDB.dbo.#SAMPLETable') IS NOT NULL DROP TABLE #SAMPLETable
CREATE TABLE #SAMPLETable
(
ITEMSEQ INT IDENTITY(1,1),
SERIAL NVARCHAR(10) COLLATE SQL_Latin1_General_CP850_CI_AS,
ITEMID NVARCHAR(10) COLLATE SQL_Latin1_General_CP850_CI_AS,
PARTSERIAL NVARCHAR(10) COLLATE SQL_Latin1_General_CP850_CI_AS,
PARTID NVARCHAR(10) COLLATE SQL_Latin1_General_CP850_CI_AS,
CREATEDDATETIME DATETIME
)
INSERT INTO
#SAMPLETable (SERIAL,ITEMID,PARTSERIAL,PARTID,CREATEDDATETIME)
VALUES ('SER0001','ASY-1342','ITM0001','PRT-0808','2017-01-17'),
('SER0001','ASY-1342','ITM0002','PRT-0809','2017-01-17'),
('SER0001','ASY-1342','ITM0003','PRT-0810','2017-01-17'),
('SER0001','ASY-1342','ITM0004','PRT-0811','2017-01-17'),
('ITM0001','PRT-0808','UNT0001','PRT-2020','2017-01-16'),
('ITM0002','PRT-0809','UNT0002','PRT-2021','2017-01-16'),
('ITM0002','PRT-0809','UNT0003','PRT-2022','2017-01-16'),
('ITM0003','PRT-0810','UNT0004','PRT-2023','2017-01-16'),
('UNT0002','PRT-2021','DTA0000','PRT-1919','2017-01-15'),
('UNT0003','PRT-2022','DTA0001','PRT-1818','2017-01-15'),
('DTA0001','PRT-1818','LST0001','PRT-1717','2017-01-14')
Die Frage ist, wenn ich nur die Haupt-Seriennummer gegeben habe, wie kann ich alle Teile zurückkehren und Subparts Serien damit verbunden?
Probe Ergebnis:
MainSerial SubSerial1 SubSerial2 SubSerial3 SubSerial4
-------------------------------------------------------
SER0001 ITM0001 UNT0001
SER0001 ITM0002 UNT0002 DTA0000
SER0001 ITM0002 UNT0003 DTA0001 LST0001
SER0001 ITM0003 UNT0004
SER0001 ITM0004
In oben ist es nicht eindeutig, wie viele Teile und Subparts dort für eine Seriennummer.
Ich habe meinen Code nicht gepostet, da ich gerade jetzt einen nach dem anderen abfrage.
Wenn ich die Anzahl der Unterteile kannte, kann ich verschachtelt Joins
tun, aber es ist nicht.
Eine andere Frage ist, ob es möglich ist, das gleiche Ergebnis zu erhalten, wenn ich nur einen der obigen Teile erhalten habe?
Könnte ein Teil mehr als 4 Ebenen haben? Wenn ja, würde ich vorschlagen, die Visualisierung auf der Anwendungsebene – JohnHC
zu behandeln. Können Sie bitte die Tabellenstruktur und Beispieldaten posten. Es ermöglicht uns, Ihnen eine sinnvolle Anfrage zu stellen. –
Sie müssen CTE mit Filter in der Ankerabfrage für den Teil/Unterabschnitt verwenden, für den Sie die zugehörigen Unterabschnitte suchen müssen. –