У меня есть представление vw_XC_DocInfo_1 со столбцами VId, VName, DocId, Amount, INum.Ниже приведены данные таблицы.
Vid VName DocId Amount INum
1 ABC 10 100 INV1
1 ABC 11 10 INV2
1 ABC 12 20 INV3
1 ABC 13 30 INV4
2 XYZ 14 200 INV5
2 XYZ 15 10 INV6
2 XYZ 16 20 INV7
2 XYZ 17 30 INV8
Мне нужно отобразить вывод, как показано ниже.
Vid VName DocIdsList Amount INumList
1 ABC 10,11 110 INV1,INV2
1 ABC 12,13 50 INV3,INV4
2 XYZ 14,15 210 INV5,INV6
3 XYZ 16,17 50 INV7,INV8
Я пробовал разные способы, но не смог включить функцию агрегирования с функцией STUFF, найдитезапрос у меня устал.
with CTE
as (
select top 20 V.VendorId,
V.VendorName,
STUFF((
select top 3 ',' + CONVERT(varchar(MAX), V1.DocumentId)
from vw_XC_DocInfo_1 V1
where V1.VendorID = V.VendorId
order by V1.DocumentId
for xml PATH('')
), 1, 1, '') as DocIdsList,
STUFF((
select top 3 ',' + CONVERT(varchar(MAX), V1.InvoiceNumber)
from vw_XC_DocInfo_1 V1
where V1.VendorID = V.VendorId
order by V1.InvoiceNumber
for xml PATH('')
), 1, 1, '') as InvNumList
from vw_XC_DocInfo_1 V
order by V.VendorID
)
select VendorId,
VendorName,
DocIdsList,
InvNumList
from CTE
group by VendorId,
VendorName,
DocIdsList,
InvNumList