есть сервис selectquery, в нем несколько запросов обедненных UNION ALL, в каждом запросе есть обычные поля и поля итогов(например в одном ) итогома сумма и количество продуктов детали продукты в счете за текущий месяц а в другом тот же запрос только для раздела склада.
Оно выводит сначала список продуктов которые нужно для счета а потом для склада, вот сокращенный код:
SELECT
[OfferingID],
([SoldCount]),
(a),
[Name]
FROM
(SELECT
[tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
[tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
[tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
[tbl_Offering].[Name] AS [Name]
------) AS [U]
GROUP BY
u.[OfferingID],
u.[Name]
[OfferingID],
([SoldCount]),
(a),
[Name]
FROM
(SELECT
[tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
[tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
[tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
[tbl_Offering].[Name] AS [Name]
------) AS [U]
GROUP BY
u.[OfferingID],
u.[Name]
для решение проблемы нужно писать так:
SELECT
[OfferingID],
count([SoldCount]),
Sum(a),
[Name]
FROM
(SELECT
[tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
[tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
[tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
[tbl_Offering].[Name] AS [Name]
------) AS [U]
GROUP BY
u.[OfferingID],
u.[Name]
[OfferingID],
count([SoldCount]),
Sum(a),
[Name]
FROM
(SELECT
[tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
[tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
[tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
[tbl_Offering].[Name] AS [Name]
------) AS [U]
GROUP BY
u.[OfferingID],
u.[Name]
Но добавить итоги не получается(((. Это можно решить?
Нравится
4 комментария
2 сентября 2016 17:38
К сожалению не понятен Ваш вопрос, можете конкретизировать его.
А также выполните sql запрос на БД, для получения результата.
Рекомендую ознакомится со статьей Использование хранимых функций в запросе
2 сентября 2016 20:32
"Терещук Павел" написал:К сожалению не понятен Ваш вопрос, можете конкретизировать его.
Нужно превратить это
SELECT [OfferingID], ([SoldCount]), (a), [Name] FROM (SELECT .....
в это
SELECT [OfferingID], count([SoldCount]), Sum(a), [Name] FROM ( ....
"Терещук Павел" написал:А также выполните sql запрос на БД, для получения результата.
запрос в бд нормально отрабатывает, не могу задать правильные параметры в сервис.
Хранимая функция не подойдет, сейчас таких запросов 2 но в будущем будет 4
5 сентября 2016 13:00
7 сентября 2016 16:26
"Терещук Павел" написал:Создаете запрос, в свойстве колонки Summary Type (Итог) выберите необходимую агрегирующую функцию:
так и зделано, только в сервисе несколько селектов, в каждом проставлены итоги на поля, но в общем запросе, который ТС сам формирует - итоги не проставляются и программно тож не ставится. Пришлось сделать SQL запрос и копи пастом создать 8 полей.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать