2015-04-02 3 views
0

Ищет элегантный способ избежать сообщения об ошибке Невозможно выполнить агрегатную функцию для выражения, содержащего агрегат или подзапрос.выполнить агрегированный план подзапроса

SELECT AccountName 
, SUM(CASE 
     WHEN CallFlag = 1 AND Attempts < c.nMaxAttempts 
      THEN 1 
      ELSE 0 
     END)CallRecords 
, SUM(CASE 
     WHEN CRC IN(
        SELECT szCRC COLLATE SQL_Latin1_General_CP1_CI_AS 
        FROM ContactCenter..CallDispositionMap 
        WHERE bBadRecord = 1) 
      THEN 1 
      ELSE 0 
     END)BadRecords 
FROM Calls; 

ответ

0

Вам необходимо использовать дополнительный выбор. А также вам нужно использовать Group BY По запросу. Попробуйте это,

SELECT 
    AccountName, 
    SUM(CallRecords) AS CallRecords, 
    SUM(BadRecords) AS BadRecords 
FROM 
    (
    SELECT AccountName 
, (CASE 
     WHEN CallFlag = 1 AND Attempts < c.nMaxAttempts 
      THEN 1 
      ELSE 0 
     END)CallRecords 
, (CASE 
     WHEN CRC IN(
        SELECT szCRC COLLATE SQL_Latin1_General_CP1_CI_AS 
        FROM ContactCenter..CallDispositionMap 
        WHERE bBadRecord = 1) 
      THEN 1 
      ELSE 0 
     END)BadRecords 
    FROM Calls) AS data 
    GROUP BY AccountName 
+0

awesome ... спасибо! – cherrywood

Смежные вопросы