21.08.2012, 15:43 | #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 |
|