SQL Reporting количество параметров в столбце - PullRequest
0 голосов
/ 05 декабря 2011

Я работаю в SSRS 3.0 с таблицей SQL, включающей следующие поля:

ApptID    BookedBy   ConfirmedBy   CancelledBy

У меня также есть настройка параметров для выбора пользователей, по которым следует выполнять фильтрацию (сопоставляет данные в BookedBy, ConfirmedBy и CancelledBy столбцы) с именем @Scheduler (который является параметром / массивом с несколькими значениями).

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

В основном:

COUNT(BookedBy IN (@Scheduler)) AS BookedCount

Может кто-нибудь помочь мне с синтаксисом для этого?

1 Ответ

1 голос
/ 05 декабря 2011

Попробуйте это

 SELECT Count(BookedBy = @Scheduler) as [BookedCount],
        Count(ConfirmedBy = @Scheduler) as [ConfirmedCount],
        Count(CancelledBy = @Scheduler) as [CancelledCount]
 FROM tablename
 WHERE BookedBy = @Scheduler OR 
       ConfirmedBy = @Scheduler OR
       CancelledBy = @Scheduler

Примечание - не проверено может содержать опечатки


Если вы вводите список, разделенный запятыми, вы можете преобразовать его в таблицу. Смотрите ссылку как это:

http://www.projectdmx.com/tsql/sqlarrays.aspx

Для этого варианта использования я бы порекомендовал одно из решений, которое сохраняет результат в CTE (поскольку вам нужно только один раз преобразовать входные данные, и это будет быстрее)

Тогда вы можете использовать эту таблицу (называемую sTable с именем столбца) следующим образом:

 SELECT Count(Bo.Name) as [BookedCount],
        Count(Co.Name) as [ConfirmedCount],
        Count(Ca.Name) as [CancelledCount]
 FROM tablename
 LEFT JOIN sTable Bo ON BookedBy = Bo.name
 LEFT JOIN sTable Co ON ConfirmedBy = Co.name 
 LEFT JOIN sTable Ca ON CancelledBy = Ca.name

Полагаю, это сработает, но выглядит не так хорошо, как другие:

 SELECT (SELECT COUNT(*) FROM table WHERE BookedBy in (@Scheduler)) AS [BookedCount],
        (SELECT COUNT(*) FROM table WHERE ConfirmedBy in (@Scheduler)) as [ConfirmedCount],
        (SELECT COUNT(*) FROM table WHERE CancelledBy in (@Scheduler)) as [CancelledCount]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...