Я работаю над хранимой процедурой, которая извлекает данные из SQL серверной базы данных и создает записи. Я бы хотел, чтобы все записи для конкретной программы и валюты с итоговой строкой внизу. На данный момент в скрипте есть итоговая запись перед результатами и она не разбита по валютам. Я попытался добавить валюту в группу by, но это усугубило ситуацию.
Мой сценарий -
DECLARE @runDate DateTime = '2020-05-19'
SELECT
t1.RecDate AS [RecDate]
,t1.Program AS [Program]
,t1.Currency AS [Currency]
,t1.SupplierName AS [SupplierName]
,t1.SupplierAccount AS [SupplierAccount]
,t1.RecStatus AS [RecStatus]
,t4.Type AS [TYPE]
,t1.Date AS [PiDate]
,t1.DiscountedDate AS [DiscountedDate]
,t1.PaymentAmount AS [Payment]
FROM orb_RootRecords t1
LEFT JOIN orb_SupplierRecords t3 on t3.OrbianAccountId = t1.SupplierAccount
LEFT JOIN orb_AccountType t4 on t4.Id = t3.AccountTypeId
WHERE FLOOR(CAST(t1.RecDate as float)) = FLOOR(CAST(@runDate as float))
--ORDER BY [SORT], [Program] ,[CURRENCY] ,[RecDate] ,[SupplierName] ,[SupplierAccount],[RecStatus] ,[TYPE],[PiDate] ,[DiscountedDate] ,[Payment]
UNION
SELECT null AS [RecDate], Program AS [Program], null AS [Currency], null AS [SupplierName], null AS [SupplierAccount], null AS [RecStatus], null AS [TYPE], null AS [PiDate], null AS [DiscountedDate]
,SUM (PaymentAmount) AS [Payment]
FROM orb_RootRecords
WHERE FLOOR(CAST(RecDate as float)) = FLOOR(CAST(@runDate as float))
GROUP BY ROLLUP(Program, Currency)
ORDER BY [Program] ,[CURRENCY] ,[RecDate] ,[SupplierName] ,[SupplierAccount],[RecStatus] ,[TYPE],[PiDate] ,[DiscountedDate] ,[Payment]
Output -
NULL NULL NULL NULL NULL NULL NULL NULL NULL 56062459.21
NULL Charles River International Inc NULL NULL NULL NULL NULL NULL NULL 29546.62
2020-05-19 00:00:00.000 Charles River International Inc USD C.H. Robinson Worldwide Inc. 6240000150 Scheduled Discount Schedule 2020-05-19 00:00:00.000 2020-05-19 00:00:00.000 5025.78
2020-05-19 00:00:00.000 Charles River International Inc USD Life Science Products, Inc 6240000230 Auto Discount Auto 2020-05-19 00:00:00.000 2020-05-19 00:00:00.000 2626.84
2020-05-19 00:00:00.000 Charles River International Inc USD LR Transport LLC (dba JKL Secure) 6240000130 Auto Discount Auto 2020-05-19 00:00:00.000 2020-05-19 00:00:00.000 18484.00
2020-05-19 00:00:00.000 Charles River International Inc USD Midwest Filtration LLC 6240000040 Auto Discount Auto 2020-05-19 00:00:00.000 2020-05-19 00:00:00.000 3410.00
NULL General Mills Inc NULL NULL NULL NULL NULL NULL NULL 28651.20
NULL General Mills Inc NULL NULL NULL NULL NULL NULL NULL 405646.05
NULL General Mills Inc NULL NULL NULL NULL NULL NULL NULL 7467291.72
NULL General Mills Inc NULL NULL NULL NULL NULL NULL NULL 7901588.97
2020-05-19 00:00:00.000 General Mills Inc CAD Aliments Ultima Inc/Ultima Foods 6050001210 Scheduled Discount Schedule 2020-05-19 00:00:00.000 2020-05-19 00:00:00.000 2004.82