我正在尝试将一个表中的行与我在服务器 2008 上的 MS SQL 中的查询结合起来。我相信我在这里取消了这段代码。这几乎符合我的需求,但它是对 SOPartsUsed 的序列号进行分组,但我需要它根据 tblServiceOrders.ProjectKeyID 进行分组。任何帮助将不胜感激我对 SQL 了解不多。我将在下面对我要完成的工作进行更详细的解释。
SELECT
p1.ItemID, SerialNumbers AS SerialNumber
FROM
tblSOPartsUsed p1 INNER JOIN
tblServiceOrders p2 ON p1.SONumber = p2.SONumber
CROSS APPLY
(SELECT
stuff
((SELECT ',' + p3.SerialNumber
FROM tblSerialNumbers p3
WHERE p3.FKSOPartsUsed = p1.SOPartsUsedKeyID
ORDER BY SerialNumber FOR XML PATH(''), TYPE ).value('.', 'varchar(max)'), 1, 1, '')
) D (SerialNumbers)
WHERE (p1.QuantityFilled > 0) AND (p2.ProjectKeyID = 385)
GROUP BY p1.ItemID, SerialNumbers, p2.ProjectKeyID
ORDER BY p1.ItemID
我有一个带有序列号的表格,一个带有服务订单上使用的零件的表格和一个服务订单表格。
tblSerialNumbers -> tblSOPartsUsed -> tblServiceOrders
tblSerialNumbers
itemID SerialNumber FKSOPartsUsed
1 1444 233
1 1555 234
1 1666 236
1 1999 237
1 1888 238
1 2222 239
1 2121 240
tblSOPartsUsed
itemID SOPartsUsed SONumber QuantityFilled
1 233 SO544 5
1 234 SO544 7
1 236 SO544 7
1 237 SO577 7
1 238 SO577 7
1 239 SO581 7
1 240 SO580 7
tblServiceOrders
SOnumber ProjectKeyID
SO544 PJ366
SO577 PJ366
SO580 PJ111
SO581 PJ111
我想要什么
itemID ProjectKeyID SerialNumber
1 PJ366 1444,1555,1666,1999,1888
我得到什么
itemID ProjectKeyID SerialNumber
1 PJ366 1444,1555,1666
1 PJ366 1999,1888
我正在尝试通过在 tblServiceOrders 中找到的 ProjectKeyID 对序列号和项目 ID 进行分组。现在上面的查询有效,但它正在对 tblSOPartsUsed 上的 ItemID 进行分组,并希望在 ProjectKeyID 上进行分组。
谢谢你的帮助。