У меня есть запрос, который форматирует мои результаты в XML. Хотя это формат, который мне нужен, он не группирует необходимые столбцы, мне нужно, чтобы он был сгруппирован.
SELECT (SELECT BatchNumber,
TotalCount,
CAST(TotalAmount AS decimal(18,2)) AS TotalAmount,
TotalRetainage
FOR XML PATH('Summary'), TYPE) ,
(SELECT ( SELECT 'Success' AS ProcessStatus,
'' AS ProcessMessage,
BatchNumber AS BatchNumber,
'' AS TransactionNumber,
'' AS VoidedDate
FOR XML PATH('Response'), TYPE),
AddressNumber,
Amount,
BusinessUnit,
Company,
DateGL,
DateInvoice,
DocumentType,
DocumentNumber,
GLOffset,
LineNumber,
NameRemark,
PayStatusCode,
PaymentHandlingCode,
SupplierInvoiceNumber,
(SELECT DetailAccountModeGL AS AccountModeGL,
DetailAccountNumberInput AS AccountNumberInput,
DetailAmount AS Amount,
DetailLedgerTypes LedgerTypes,
DetailLineNumber AS LineNumber,
DetailNameAlphaExplanation AS NameAlphaExplanation,
DetailNameRemarkExplanation AS NameRemarkExplanation,
DetailObjectAccount AS ObjectAccount,
DetailSubledgerGL AS SubledgerGL,
DetailSubledgerType AS SubledgerType,
DetailSubsidiary AS Subsidiary
FOR XML PATH('Details'), TYPE)
FOR XML PATH('Invoice'), TYPE, ROOT('Invoices'))
FROM #ExpenseConsolidated
FOR XML PATH('InvoiceIntegrationBatch')
Это результат, который я получаю
<InvoiceIntegrationBatch>
<Summary>
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TotalCount>2</TotalCount>
<TotalAmount>0.00</TotalAmount>
<TotalRetainage>0</TotalRetainage>
</Summary>
<Invoices>
<Invoice>
<Response>
<ProcessStatus>Success</ProcessStatus>
<ProcessMessage />
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TransactionNumber />
<VoidedDate />
</Response>
<AddressNumber>0.000000000000000e+000</AddressNumber>
<Amount>2.390000000000000e+005</Amount>
<BusinessUnit> 4362</BusinessUnit>
<Company>04362</Company>
<DateGL>116173</DateGL>
<DateInvoice>116173</DateInvoice>
<DocumentType>JG</DocumentType>
<DocumentNumber>1.599032800000000e+007</DocumentNumber>
<GLOffset> </GLOffset>
<LineNumber>0.000000000000000e+000</LineNumber>
<NameRemark> </NameRemark>
<PayStatusCode> </PayStatusCode>
<PaymentHandlingCode> </PaymentHandlingCode>
<SupplierInvoiceNumber> </SupplierInvoiceNumber>
<Details>
<AccountModeGL>2</AccountModeGL>
<AccountNumberInput> 4362.10410.582 </AccountNumberInput>
<Amount>2.390000000000000e+005</Amount>
<LedgerTypes>AA</LedgerTypes>
<LineNumber>1.000000000000000e+000</LineNumber>
<NameAlphaExplanation>TEST Alpha Explanation</NameAlphaExplanation>
<NameRemarkExplanation>Test Name Remark Explanation</NameRemarkExplanation>
<ObjectAccount>10410 </ObjectAccount>
<SubledgerGL>2016 </SubledgerGL>
<SubledgerType>X</SubledgerType>
<Subsidiary>582 </Subsidiary>
</Details>
</Invoice>
</Invoices>
</InvoiceIntegrationBatch>
<InvoiceIntegrationBatch>
<Summary>
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TotalCount>2</TotalCount>
<TotalAmount>0.00</TotalAmount>
<TotalRetainage>0</TotalRetainage>
</Summary>
<Invoices>
<Invoice>
<Response>
<ProcessStatus>Success</ProcessStatus>
<ProcessMessage />
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TransactionNumber />
<VoidedDate />
</Response>
<AddressNumber>0.000000000000000e+000</AddressNumber>
<Amount>-2.390000000000000e+005</Amount>
<BusinessUnit> 4362</BusinessUnit>
<Company>04362</Company>
<DateGL>116173</DateGL>
<DateInvoice>116173</DateInvoice>
<DocumentType>JG</DocumentType>
<DocumentNumber>1.599032800000000e+007</DocumentNumber>
<GLOffset> </GLOffset>
<LineNumber>0.000000000000000e+000</LineNumber>
<NameRemark> </NameRemark>
<PayStatusCode> </PayStatusCode>
<PaymentHandlingCode> </PaymentHandlingCode>
<SupplierInvoiceNumber> </SupplierInvoiceNumber>
<Details>
<AccountModeGL>2</AccountModeGL>
<AccountNumberInput> 4362.10410.580 </AccountNumberInput>
<Amount>-2.390000000000000e+005</Amount>
<LedgerTypes>AA</LedgerTypes>
<LineNumber>2.000000000000000e+000</LineNumber>
<NameAlphaExplanation>Test Alpha Explanation 2</NameAlphaExplanation>
<NameRemarkExplanation>Test Name Remark Explanation 2</NameRemarkExplanation>
<ObjectAccount>10410 </ObjectAccount>
<SubledgerGL>2016 </SubledgerGL>
<SubledgerType>X</SubledgerType>
<Subsidiary>580 </Subsidiary>
</Details>
</Invoice>
</Invoices>
</InvoiceIntegrationBatch>
Но что мне действительно нужно, так это счета-фактуры, сгруппированные вместе, потому что все это в одном пакете, как в приведенном ниже XML-коде:
<InvoiceIntegrationBatch>
<Summary>
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TotalCount>2</TotalCount>
<TotalAmount>0.00</TotalAmount>
<TotalRetainage>0</TotalRetainage>
</Summary>
<Invoices>
<Invoice>
<Response>
<ProcessStatus>Success</ProcessStatus>
<ProcessMessage />
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TransactionNumber />
<VoidedDate />
</Response>
<AddressNumber>0.000000000000000e+000</AddressNumber>
<Amount>2.390000000000000e+005</Amount>
<BusinessUnit> 4362</BusinessUnit>
<Company>04362</Company>
<DateGL>116173</DateGL>
<DateInvoice>116173</DateInvoice>
<DocumentType>JG</DocumentType>
<DocumentNumber>1.599032800000000e+007</DocumentNumber>
<GLOffset> </GLOffset>
<LineNumber>1</LineNumber>
<NameRemark> </NameRemark>
<PayStatusCode> </PayStatusCode>
<PaymentHandlingCode> </PaymentHandlingCode>
<SupplierInvoiceNumber> </SupplierInvoiceNumber>
<Details>
<AccountModeGL>2</AccountModeGL>
<AccountNumberInput> 4362.10410.582 </AccountNumberInput>
<Amount>2.390000000000000e+005</Amount>
<LedgerTypes>AA</LedgerTypes>
<LineNumber>1.000000000000000e+000</LineNumber>
<NameAlphaExplanation>TEST Alpha Explanation</NameAlphaExplanation>
<NameRemarkExplanation>Test Name Remark Explanation</NameRemarkExplanation>
<ObjectAccount>10410 </ObjectAccount>
<SubledgerGL>2016 </SubledgerGL>
<SubledgerType>X</SubledgerType>
<Subsidiary>582 </Subsidiary>
</Details>
</Invoice>
<Invoice>
<Response>
<ProcessStatus>Success</ProcessStatus>
<ProcessMessage />
<BatchNumber>6.777209000000000e+006</BatchNumber>
<TransactionNumber />
<VoidedDate />
</Response>
<AddressNumber>0.000000000000000e+000</AddressNumber>
<Amount>-2.390000000000000e+005</Amount>
<BusinessUnit> 4362</BusinessUnit>
<Company>04362</Company>
<DateGL>116173</DateGL>
<DateInvoice>116173</DateInvoice>
<DocumentType>JG</DocumentType>
<DocumentNumber>1.599032800000000e+007</DocumentNumber>
<GLOffset> </GLOffset>
<LineNumber>2</LineNumber>
<NameRemark> </NameRemark>
<PayStatusCode> </PayStatusCode>
<PaymentHandlingCode> </PaymentHandlingCode>
<SupplierInvoiceNumber> </SupplierInvoiceNumber>
<Details>
<AccountModeGL>2</AccountModeGL>
<AccountNumberInput> 4362.10410.580 </AccountNumberInput>
<Amount>-2.390000000000000e+005</Amount>
<LedgerTypes>AA</LedgerTypes>
<LineNumber>2.000000000000000e+000</LineNumber>
<NameAlphaExplanation>Test Alpha Explanation 2</NameAlphaExplanation>
<NameRemarkExplanation>Test Name Remark Explanation 2</NameRemarkExplanation>
<ObjectAccount>10410 </ObjectAccount>
<SubledgerGL>2016 </SubledgerGL>
<SubledgerType>X</SubledgerType>
<Subsidiary>580 </Subsidiary>
</Details>
</Invoice>
</Invoices>
</InvoiceIntegrationBatch>
Обратите внимание, что я знаю, что типы данных перепутаны в данный момент,Но я ломал голову над тем, как правильно сгруппировать их.
Ниже приведены тестовые данные, которые создают и вставляют
CREATE TABLE #ExpenseConsolidated (
TotalCount int,
TotalAmount decimal(18,2),
TotalRetainage decimal(18,2),
BatchNumber varchar(200),
AddressNumber varchar(200),
Amount decimal(18,2),
BusinessUnit varchar(200),
Company varchar(200),
DateGL varchar(200),
DateInvoice varchar(200),
DocumentType varchar(200),
DocumentNumber varchar(200),
GLOffset varchar(200),
LineNumber varchar(200),
NameRemark varchar(200),
PayStatusCode varchar(200),
PaymentHandlingCode varchar(200),
SupplierInvoiceNumber varchar(200),
DetailAccountModeGL varchar(200),
DetailAccountNumberInput varchar(200),
DetailAmount decimal(18,2),
DetailLedgerTypes varchar(200),
DetailLineNumber varchar(200),
DetailNameAlphaExplanation varchar(200),
DetailNameRemarkExplanation varchar(200),
DetailObjectAccount varchar(200),
DetailSubledgerGL varchar(200),
DetailSubledgerType varchar(200),
DetailSubsidiary varchar(200),
DetailReverseVoid varchar(200)
)
INSERT INTO #ExpenseConsolidated
SELECT 2,0,0,'6777209', '0', 239000, ' 4362', '04362', '116173', '116173', 'JG', '15990328', ' ', '0', '', '', '', '', '2', ' 4362.10410.582 ', 239000, 'AA', '1', 'Reclass Consultant Fee Sample1', 'Sample1', '10410 ', '2016 ', 'X', '582 ' , ' '
UNION
SELECT 2,0,0,'6777209', '0', -239000, ' 4362', '04362', '116173', '116173', 'JG', '15990328', ' ', '0', '', '', '', '', '2', ' 4362.10410.580 ', -239000, 'AA', '2', 'Reclass Consultant Fee Sample2', 'Sample2', '10410 ', '2016 ', 'X', '580 ' , ' '