Временами бывает необходимо в одной из колонок в реестра записей отобразить сумму значений по определенной колонке.
Для того, чтобы это сделать, следует создать колонку подзапроса:
Пример запроса:
"tbl_Invoice"."Amount" AS "Amount",
"tbl_Invoice"."OwnerID" AS "OwnerID",
(SELECT
SUM("tbl_InvoiceSum"."Amount") AS "Amount"
FROM
"tbl_Invoice" AS "tbl_InvoiceSum"
WHERE("tbl_InvoiceSum"."OwnerID" = "tbl_Invoice"."OwnerID")) AS "AmountSum"
FROM
"tbl_Invoice" AS "tbl_Invoice"
Пример сервиса в приложении.
Собственно, подзапросы разные бывают. Чащё даже не сумму вытягивают, а максимальное значение или первое подходящее по критерию (например, адрес контакта нужного типа).
Это настраивается в свойствах поля в подзапросе:
такой вопрос
есть следующий подзапрос в sq_Opportunity
(SELECT SUM([tbl_Cashflow].[BasicAmount]) AS [BasicAmount] FROM [dbo].[tbl_Cashflow] AS [_tbl_Cashflow] WHERE([tbl_Cashflow].[OpportunityID] = [tbl_Opportunity].[ID] AND [tbl_Cashflow].[UseAsPandL] = :True)) AS [TourCreditSum],
в датасете по этому подзапросу сформировано поле с дробным значением.
все выводит верно, но в гриде в поле итогов нет возможности суммировать всю колонку этого поля - только вывести количество, как будто это не численное поле
я так понял оно и не должно подсчитывать (так как итоги подсчитываются SQL-запросом в БД, а не на основе датасета). Верно?
http://www.community.terrasoft.ru/forum/topic/5193
Дмитрий, вычислить итог можно, однако в некоторых версиях бинарных файлов отключена возможность подсчета итогов по колонкам подзапроса. Связано это с тем, что корректность работы колонок подзапроса лежит непосредственно на программисте, который их делает, из-за чего поступали многочисленные жалобы от клиентов о некорректности работы итогов. В результате было принято решение вообще отключить возможность суммирования по таким колонкам из-за сложности поддержки такого уровня гибкости.
Можно сделать view с подзапросом, создать и привязать к нему сервис таблицы и получать значение из неё как из обычной колонки.