SQL 服务器查询以获取下一行中的主要数据及其子组件
SQL Server query for getting the Main Data and it sub Components in next next row
我有一个 table ComponentMaster
,其中包含 ID
、MainAssetID
、SerialNo
列。
AssetID
是AssetMaster
中的主键table和ComponentMaster
中的外键。在 AssetMaster
中有列 AssetID
、Serialno
等
我的要求是第一行需要 MainAssetID
,下一行需要 MainAssetID
的子组件。
ComponentMaster
:
ID MainAssetID SerialNo
---------------------------------
1 24 4561334054
2 24 4561334099
3 24 4561334158
AssetMaster
:
AssetID SerialNo
----------------------------
24 YLCD002160
我需要输出为
SerialNo
----------
YLCD002160
4561334054
4561334099
4561334158
有人可以指导我这样做吗?
试试这个:
Select SerialNo From (
Select AssetId, SerialNo, 1 as n From AssetMaster
Union all
Select MainAssetId, SerialNo, 2 as n From ComponentMaster) a
Order by AssetId, n, SerialNo
非常感谢您的建议 Giorgi Nakeuri。你的建议对我帮助很大。我使用以下查询解决了同样的问题。
SELECT *
FROM
(SELECT
AssetID, 'MAIN ASSET' as TYPE, serialno
FROM
VW_COMPONENETS --(THIS WILL HAVE THE MAIN ASSETID SERIALNO ALONE
UNION ALL
SELECT
C.RF_AssetID, 'COMPONENT' as TYPE, SERIALNO
FROM
dbo.COMPONENTMASTER C
LEFT OUTER JOIN
dbo.AssetMaster A ON C.RF_COMPONENT = A.RF_SerialNo) tbl
ORDER BY
AssetID,TYPE DESC
此致,
对苏雷什
我有一个 table ComponentMaster
,其中包含 ID
、MainAssetID
、SerialNo
列。
AssetID
是AssetMaster
中的主键table和ComponentMaster
中的外键。在 AssetMaster
中有列 AssetID
、Serialno
等
我的要求是第一行需要 MainAssetID
,下一行需要 MainAssetID
的子组件。
ComponentMaster
:
ID MainAssetID SerialNo
---------------------------------
1 24 4561334054
2 24 4561334099
3 24 4561334158
AssetMaster
:
AssetID SerialNo
----------------------------
24 YLCD002160
我需要输出为
SerialNo
----------
YLCD002160
4561334054
4561334099
4561334158
有人可以指导我这样做吗?
试试这个:
Select SerialNo From (
Select AssetId, SerialNo, 1 as n From AssetMaster
Union all
Select MainAssetId, SerialNo, 2 as n From ComponentMaster) a
Order by AssetId, n, SerialNo
非常感谢您的建议 Giorgi Nakeuri。你的建议对我帮助很大。我使用以下查询解决了同样的问题。
SELECT *
FROM
(SELECT
AssetID, 'MAIN ASSET' as TYPE, serialno
FROM
VW_COMPONENETS --(THIS WILL HAVE THE MAIN ASSETID SERIALNO ALONE
UNION ALL
SELECT
C.RF_AssetID, 'COMPONENT' as TYPE, SERIALNO
FROM
dbo.COMPONENTMASTER C
LEFT OUTER JOIN
dbo.AssetMaster A ON C.RF_COMPONENT = A.RF_SerialNo) tbl
ORDER BY
AssetID,TYPE DESC
此致,
对苏雷什