我在一個表ProdHistory
中有不同的產品序列號,其中包含表,如表所示,生產歷史。
例如,我有產品序列號SER001
,它使用具有自己序列號的零件。
我們也生產這些零件,因此使用相同的表ProdHistory
來追蹤其子部分。
子部件和子部件也是一樣。來自同一張表的遞歸查詢
樣品表
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')
的問題是,如果我只給定主序列號,我怎麼能返回所有的零件和子部分的序列與它相關聯?
示例結果:
MainSerial SubSerial1 SubSerial2 SubSerial3 SubSerial4
-------------------------------------------------------
SER0001 ITM0001 UNT0001
SER0001 ITM0002 UNT0002 DTA0000
SER0001 ITM0002 UNT0003 DTA0001 LST0001
SER0001 ITM0003 UNT0004
SER0001 ITM0004
在上面,它是沒有明確的多少部分和子部分有一個序列號。
我沒有發佈我的代碼,因爲我現在正在做的是逐個查詢它。
如果我知道子部分的數量,我可以嵌套Joins
,但事實並非如此。
另一個問題是,如果我只是給出了上面的任何子部分,是否有可能返回相同的結果?
能部分比4級的水平嗎?如果是這樣,我會建議在應用程序級別處理可視化 – JohnHC
您可以請張貼表結構和示例數據。它將允許我們爲您提供有意義的查詢。 –
您必須使用CTE和錨定查詢中的過濾器來查找您需要查找相關子部分的零件/子部件 –