|
|
#6 |
|
Участник
|
Здравствуйте.
Заранее извиняюсь за некропостинг, но ответа на форуме не нашёл (может плохо искал), а данный тред очень похож на мою проблему. Задача. Решил сделать красивый отчёт с "пирогом" по действиям в рамках CampaignActivity (действия кампании). То есть кастомизировал немного сущность Appointment (Встреча) добавив поля new_win (Положительный результат) и new_fail (Отрицательный результат) и на выходе получаю что-то вроде пирожка во вложении. Поля для него, в обычном варианте, вытаскиваются таким запросом: Код: SELECT COUNT(*) AS kolvo, 'Положительные' AS 'type', FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN FilteredCampaignActivity AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_win IS NOT NULL) AND (FCA.activityid = @id) GROUP BY FA.regardingobjectidname UNION ALL SELECT COUNT(*) AS kolvo, 'Отрицательные' AS 'type', FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN FilteredCampaignActivity AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail IS NOT NULL) AND (FCA.activityid = @id) GROUP BY FA.regardingobjectidname UNION ALL SELECT COUNT(*) AS kolvo, 'Не начатые' AS 'type', FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN FilteredCampaignActivity AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail IS NULL) AND (FA.new_win IS NULL) AND (FCA.activityid = @id) GROUP BY FA.regardingobjectidname Собственно динамический запрос (простите если разнесу разметку форума): Код: DECLARE @CRM_CampaignActivity VarChar(Max)
DECLARE @SQL VarChar(Max)
SET @CRM_CampaignActivity = 'SELECT FilteredCampaignActivity.activityid FROM FilteredCampaignActivity'
SET @SQL =
'SELECT COUNT(*) AS kolvo, FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN ('+@CRM_CampaignActivity+') AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_win IS NOT NULL) AND (FCA.activityid in ('+@CRM_CampaignActivity+')) GROUP BY FA.regardingobjectidname
UNION ALL
SELECT COUNT(*) AS kolvo, FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN ('+@CRM_CampaignActivity+') AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail IS NOT NULL) AND (FCA.activityid in ('+@CRM_CampaignActivity+')) GROUP BY FA.regardingobjectidname
UNION ALL
SELECT COUNT(*) AS kolvo, FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN ('+@CRM_CampaignActivity+') AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail IS NULL) AND (FA.new_win IS NULL) AND (FCA.activityid in ('+@CRM_CampaignActivity+')) GROUP BY FA.regardingobjectidname'
EXEC (@SQL)Первая: Фильтрации данных не происходит. Всегда возвращаются все записи по всем Действиям кампаний. Вторая: Ругается на конструкцию вида 'Положительные' AS 'type'. Говорит некорректный синтаксис. Как экранировать эту конструкцию? Или хотя бы скажите как называется она (выборка несуществующего поля?) чтобы я мог погуглить. Заранее благодарю за ответы. |
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Подстановка в поле из нескольких сущностей | 9 | |||
| Выбор нескольких значений | 12 | |||
| Предварительная фильтрация по теме | 3 | |||
| Предварительная фильтрация в отчётах (CRMAF) | 10 | |||
|