SSRS - Как сопоставить значения набора данных с жестко закодированными значениями - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать файл RDL, и мне нужно, чтобы tablix появился в следующем формате.

Вот как я хочу, чтобы результаты выглядели

This is how i want the results to look

Значения, выделенные жирным шрифтом, являются жестко закодированными значениями. Вот так выглядит вывод оператора SELECT в наборах данных

Вывод SQL

SQL Output

Я не знаю, как сделать так, чтобы значения, выводимые из базы данных, соответствовали жестко закодированным значениям в файле RDL. Поле «День» представляет день в месяце, а поле «Num» - количество продаж за день. Приведенный выше пример показывает, что в первый день месяца было совершено 100 продаж. Мне нужно tablix для вывода в этом конкретном формате.

Если день не указан в выводе SQL (в этот день не было продаж), я хочу, чтобы он вывел пустое значение и / или 0.

Есть идеи, как этого достичь? Весь совет очень ценится. Я все еще довольно новичок в SSRS / построителе отчетов, поэтому, пожалуйста, потерпите меня, если я скажу что-нибудь глупое в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете сделать это с помощью поиска, но вам нужно будет жестко запрограммировать поиск в каждой ячейке. например за день 1

=lookup(cint(1),Fields!Day.Value,Fields!Num.Value,"Dataset1")

Более быстрый способ - создать таблицу на наборе данных, отфильтрованном за первые десять дней:

=Switch(
Fields!DAY.Value <= 10 and Fields!DAY.Value >=1,"Include",
True,"Exclude"
)

Создайте группу строк по дням, затем создайте столбец с днем ​​и номером и столбцы с полями! DAY.Value + 10 и Полями! DAY.Value + 20 со следующими поисками:

=lookup(Fields!DAY.Value+10,Fields!DAY.Value,Fields!NUM.Value,"DataSet1")
=lookup(Fields!DAY.Value+20,Fields!DAY.Value,Fields!NUM.Value,"DataSet1")
0 голосов
/ 07 ноября 2018

Используйте CTE, чтобы создавать строки для каждого нужного дня, а затем объединять результаты. Отправной точкой для вас CTE может быть:

;WITH nums AS
   (SELECT 1 AS value
    UNION ALL
    SELECT value + 1 AS value
    FROM nums
    WHERE nums.value <= 30)
SELECT *
FROM nums

Возможно, вы захотите изменить общее количество дней в зависимости от месяца, который вы просматриваете.

...