我有一個視圖vw_XC_DocInfo_1,列VId,VName,DocId,Amount,INum。以下是表格數據。SELECT語句中具有聚合函數的記錄的SQL Server連接
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
隨意評論,如果我困惑,我是一個newbee不能發佈一個問題,良好的格式.Apolozies的。 – 2012-03-22 20:09:00
@RedFilter感謝您的編輯。 – 2012-03-22 20:09:40
決定哪些行進入同一組的規則是什麼? – 2012-03-22 20:10:15