テーブル名には生産履歴が含まれているProdHistory
が1つのテーブル内に異なる製品シリアル番号を持っています。
たとえば、シリアルシリアル番号のある部品を使用する製品シリアル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
にすることはできますが、それはできません。
もう1つの質問は、私が上記のサブパートのいずれかを与えられただけで、同じ結果を返すことができるかどうかです。
部分は4つのレベル以上のものを持ってもらえますか?もしそうなら、私はアプリケーションレベルで可視化を扱うことをお勧めします – JohnHC
テーブル構造とサンプルデータを投稿してください。意味のあるクエリを提供することができます。 –
関連するサブパートを探す必要がある部分/サブパネルのアンカークエリでフィルタ付きCTEを使用する必要があります –