Агрегатные функции отчетов SQL Server - PullRequest
1 голос
/ 01 сентября 2009

G'day,

Я всего лишь n00b, когда дело доходит до отчетов SQL Server, и мои знания Vb.Net устаревают.

У меня есть подробный отчет о строках в базе данных с одним из столбцов, который можно обнулять. Я хочу показать простую круговую диаграмму с данными в результате, которая показывает, сколько строк имеют значение, а сколько - нет.

Я не могу понять, как записать агрегат Count () в выражении для ряда данных, чтобы он фильтровал.

например.

У меня есть 10000 строк, из которых 2000 имеют ноль. Мне нужна круговая диаграмма, которая показывает два результата: один маленький круговой кусок с 2000 и больший круговой кусок с 8000. Когда я пытаюсь выполнить =Count(IsDbNull(Fields!TransactionID.Value)) и =Count(Not IsDbNull(Fields!TransactionID.Value)), кажется, что он отправляет один и тот же результат дважды, т.е. результирующий набор остается того же размера, он просто состоит из истин и ложей.

Приветствую вас за помощь.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2009

Поскольку вы используете COUNT, вы просто подсчитываете значения; IsDbNULL возвращает TRUE или FALSE, оба из которых считаются.

Попробуйте сделать это для ненулевых значений = SUM (IIF (ISNOTHING (Fields! TransactionID.Value), 0,1)) , а для NULL используйте = SUM (IIF (ISNOTHING) (Поля! TransactionID.Value), 1,0))

На самом деле, для ненулевых значений вы можете просто использовать COUNT (Fields! TransactionID.Value)

1 голос
/ 01 сентября 2009

Я бы использовал что-то вроде этого

  • -сумма (CInt (IsDbNull (Fields! TransactionID.Value)))
  • COUNT (поля! TransactionID.Value) + SUM (CInt (NOTIsDbNull (поля! TransactionID.Value)))

COUNT буквально считает значения, так же, как SQL Sever. Итак:

  • IsDBNull дает значение true / false -> -1/0 -> SUM, которое дает вам число NULL (минус, конечно)
  • Затем возьмите полный подсчет, вычтите СУММУ, которая дает ненулевой счет
...