我有以下数据的两个表:
表1(MOF_Check_Vendor
)
id ApprovalCycel_ID FPM_Vendor_ID BankAccount_ID
------------------------------------------------------
13 23 197 11
14 24 198 6
22 25 198 6
表2(ApprovalCycel
)
ApprovalCycel_ID Currency_id fpm_vendor_id Invoice_Number
--------------------------------------------------------------
23 133 197 INV02
24 133 198 INV03
25 133 198 BOInvoice
我使用此查询来获得想要的结果:
SELECT
FPM_Vendor_ID,
STUFF(
(SELECT
'Invoice_Number' + char(9) +
'InvoiceCurrency' + char(9) +
'Amount' + char(13) + char(10) +
CONVERT(NVARCHAR(max), ap.Invoice_Number) + char(9) +
CUR + char(9) +
CONVERT(NVARCHAR(max), ap.Ammount) + char(13) + char(10)
FROM
dbo.ApprovalCycel ap
JOIN
dbo.Country ON ap.Currency_id = dbo.Country.Country_ID
LEFT JOIN
dbo.MOF_Check_Vendor mv ON ap.ApprovalCycel_ID = mv.ApprovalCycel_ID
WHERE
mv.ID IN (13,14,22)
GROUP BY
PR_Request_Supplier_ID, Invoice_Number, CUR, Amount
FOR XML PATH('')), 1, 0, '') AS GComment
FROM
dbo.ApprovalCycel
LEFT JOIN
dbo.MOF_Check_Vendor ON dbo.ApprovalCycel.ApprovalCycel_ID = dbo.MOF_Check_Vendor.ApprovalCycel_ID
WHERE
ID IN (13, 14, 22)
GROUP BY
FPM_Vendor_ID, BankAccount_ID
结果返回如下:
FPM_Vendor_ID GComment
------------------------------------------------------------
197 Invoice_Number InvoiceCurrency Amout
 INV02 QAR 500.00
 Invoice_Number InvoiceCurrency Amout
 BOInvoice QAR 1000.00
 Invoice_Number InvoiceCurrency Amout
 INV03 QAR 1000.00
198 Invoice_Number InvoiceCurrency Amout
 INV02 QAR 500.00
 Invoice_Number InvoiceCurrency Amout
 BOInvoice QAR 1000.00
 Invoice_Number InvoiceCurrency Amout
 INV03 QAR 1000.00
但它应该是:
FPM_Vendor_ID GComment
-------------------------------------------------------------------
197 Invoice_Number InvoiceCurrency Amout
 INV02 QAR 500.00
198 Invoice_Number InvoiceCurrency Amout
 BOInvoice QAR 1000.00
 Invoice_Number InvoiceCurrency Amout
 INV03 QAR 1000.00
我需要的结果如下:
FPM_Vendor_ID GComment
------------------------------------------------------------
197 Invoice_Number InvoiceCurrency Amout
 INV02 QAR 500.00
198 Invoice_Number InvoiceCurrency Amout
 BOInvoice QAR 1000.00
 Invoice_Number InvoiceCurrency Amout
 INV03 QAR 1000.00
答案 0 :(得分:0)
感谢所有人,但我已经解决了这个问题 通过更改查询如下:
SELECT FPM_Vendor_ID,
STUFF(
(SELECT 'Invoice_Number' + char(9) + 'InvoiceCurrency' + char(9) +
'Amount' + char(13) + char(10) + CONVERT(NVARCHAR(MAX),
ap.Invoice_Number) + char(9) + CUR + char(9) +
CONVERT(NVARCHAR(MAX), ap.Ammount) + char(13) + char(10)
FROM dbo.ApprovalCycel ap
JOIN dbo.Country ON ap.Currency_id = dbo.Country.Country_ID
LEFT JOIN dbo.MOF_Check_Vendor mv ON ap.ApprovalCycel_ID = mv.ApprovalCycel_ID
WHERE mv.FPM_Vendor_ID = MOF_Check_Vendor.FPM_Vendor_ID
GROUP BY PR_Request_Supplier_ID, Invoice_Number, CUR, Amount
FOR XML PATH('')), 1, 0, '') AS GComment
FROM dbo.ApprovalCycel
LEFT JOIN dbo.MOF_Check_Vendor ON dbo.ApprovalCycel.ApprovalCycel_ID = dbo.MOF_Check_Vendor.ApprovalCycel_ID
WHERE ID IN (13,14,22)
GROUP BY FPM_Vendor_ID, BankAccount_ID