У меня есть таблица 'tbl_Items' с нижними столбцами
[Id] [int] NULL,
[ItemNo] [varchar](50) NULL,
[TotalPieces] [int] NULL
и другая таблица 'tbl_ItemPieces' с нижними столбцами
[Id] [int] NULL,
[ItemId] [int] NULL,
[PieceNo] [int] NULL
примерные значения, как показано ниже:
tbl_Items
Id ItemNo TotalPieces
1 1001 5
2 1002 3
3 1003 4
tbl_ItemPieces
Id ItemId PieceNo
1 1 1
2 1 2
3 2 1
4 2 3
5 3 3
6 3 4
Я использовал приведенный ниже запрос, чтобы получить количество доступных штук и общее количество штук и количество доступных штук в виде строки, разделенной запятой.
select
a.ItemNo, COUNT(b.PieceNo) ActualPieces, a.TotalPieces,
STUFF((SELECT ', ' + CAST( PieceNo as varchar(50))
FROM tbl_ItemPieces b
WHERE b.itemId = a.Id
FOR XML PATH('')), 1, 2, '')
from tbl_Items a
inner join tbl_ItemPieces b
on a.Id = b.itemId
group by a.ItemNo, a.TotalPieces, a.Id
, результат которого ниже
ItemNo ActualPieces TotalPieces AvailablePieces
1001 2 5 1, 2
1002 2 3 1, 3
1003 2 4 3, 4
Мне нужен еще один столбец в виде строки, разделенной запятыми, которая содержит номера частей, которых нет в таблице, скажем, если 5 - общая сумма, и части включеныравны 1,3, тогда значение этого столбца равно '2,4,5'
ожидаемый результат
ItemNo ActualPieces TotalPieces AvailablePieces NotAvailablePieces
1001 2 5 1, 2 3,4,5
1002 2 3 1, 3 2
1003 2 4 3, 4 1,2