Общее количество групп в ссрс - PullRequest
0 голосов
/ 23 февраля 2019

Мой запрос SQL возвращает:

orderhed_pino_c OrderHed_OrderNum   OrderDtl_OrderLine  calculated_totalsqm
19.0503 50291   1   1.6359
19.0503 50291   1   1.6359
19.0503 50291   2   1.59244
19.0503 50291   2   1.59244
19.0503 50292   1   28.0476
19.0503 50290   1   3.2718
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808
19.0503 50290   3   1
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808
19.0503 50290   4   38.868
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808
19.0503 50288   1   7.418808

В SSRS я сгруппировал по OrderHed_OrderNum и OrderDtl_OrderLine Пожалуйста, смотрите изображение.

Query output

Я хочу получить calculate_totalsqm для orderhed_ordernum.

, но я получаю общее количество всех строк.

Для orderhed_ordernum = 50291 У меня есть два orderdtl_orderline 1 и 2, итого должно быть 1,6359 + 1,59244 = 3,22834

result set

, но SSRS показывает 6,45.

У меня есть запрос набора данныхкак:

SELECT Sum(t1)
FROM (
  SELECT [orderhed_ordernum] AS T2
    , Avg([calculated_totalsqm]) AS T1
    , [orderdtl_orderline] AS T3
  FROM dbo.[baqreportresult_" + parameters!tableguid.value + "]
  GROUP BY [orderhed_ordernum], [orderdtl_orderline]
) BB
GROUP  BY t2  

, но я получаю ошибку как:

Программа Ice.Services.Lib.RunTask вызвала непредвиденное исключение со следующим сообщением: RunTask: System.Web.Services.Protocols.SoapException: во время обработки отчета произошла ошибка.---> Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: во время обработки отчета произошла ошибка.---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: сбой выполнения запроса для набора данных 'TotalSQM'.---> System.Data.SqlClient.SqlException: неправильный синтаксис рядом с ключевым словом «By». ****

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы хотите использовать значения параметров, чтобы изменить текст вашего оператора Sql (т. Е. Предоставить имена базы данных, таблицы или поля), то превратите весь оператор Sql в выражение.Щелкните правой кнопкой мыши набор данных, выберите «Свойства» и нажмите кнопку fx рядом с оператором Sql, чтобы отредактировать его и превратить в строковое выражение.Введите следующее:

="SELECT Sum(t1) "
&"FROM ( "
&"  SELECT [orderhed_ordernum] AS T2 "
&"    , Avg([calculated_totalsqm]) AS T1 "
&"    , [orderdtl_orderline] AS T3 "
&"  FROM dbo.[baqreportresult_" & Parameters!tableguid.value & "] "
&"  GROUP BY [orderhed_ordernum], [orderdtl_orderline] "
&") BB "
&"GROUP BY t2 "

Таким образом, он просто инкапсулирует весь Sql в кавычках, превращая его в строковое выражение, и вставляет значение параметра в оператор Sql для вычисления правильного имени таблицы во время выполнения.Оператор Sql строится из строкового выражения во время выполнения, создавая желаемое имя таблицы из параметра tableguid и затем выполняя его для базы данных.

Обратите внимание на пробелы в конце каждой строки, которые необходимы, так как это приведет к одной строке Sql.

Обратите также внимание, что для конкатенации строк используется & вместо +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...