2016-07-21 7 views
0

результат таблицыMy SQL запрос просуммировать значения столбца на основе нескольких условий

SELECT cc.Contact_ID 
     , SUM(HeadCount) 
     , c.ClientID 
     , c.Client_Name 
     , cc.Contact_Name 
     , cc.Role 
     , cs.Communication 
     , cs.ResponseTime 
     , cs.LeadershipStyle 
     , cs.Trust 
     , cs.Sentiment 
    FROM client c 
    LEFT 
    JOIN client_contact cc 
    ON c.ClientID = cc.Client_ID 
    JOIN process p 
    ON c.ClientID = p.ClientID 
    AND cc.Contact_Process = p.ProcessID 
    JOIN verticals v 
    ON v.VerticalID = cc.Contact_Vertical 
    LEFT 
    JOIN client_sentimental_indicator cs 
    ON cs.ClientContactID = cc.Contact_ID 
    WHERE c.STATUS = 1 
    AND p.ProcessStatus = 0 
    AND cc.status = 0 
    GROUP 
    BY c.ClientID 
     , cc.Contact_ID 
    ORDER 
    BY c.client_Name 

здесь запроса является таблица результатов

ID Sum(headcount) CID  CName  contname 
339 6   340  xxx   Inc Andy Stetson   
340 3   340  xxx   Danielle du Toit   
351 3   322  yyy   Ron Mahulkar   
350 3   322  zzz   Nicholas Ho  
349 3    322  zzz   Will Power  
271 74   102  vvv   Carie Hinton   
338 31   102  vvv   Linda Dunn  
283 9    102  vvv   Waseem Khan 

мне нужен результат, как показано ниже

ID Sum(headcount) exactSum CID CName  contname 
339 6   9  340  xxx   Inc Andy Stetson   
340 3      340  xxx   Danielle du Toit   
351 3   3  322  yyy   Ron Mahulkar   
350 3      322  zzz   Nicholas Ho  
349 3      322  zzz   Will Power  
271 74   114  102  vvv   Carie Hinton   
338 31     102  vvv   Linda Dunn  
283 9      102  vvv   Waseem Khan 

У меня есть CID, повторяющийся и должен отображаться повторно, и сумма должна быть сделана на основе CID

Пожалуйста, кто-нибудь помочь

+0

Не совсем уверен, что ваш вопрос на самом деле, как вы вычислить exactSum? Вы заявляете, что точная сумма рассчитывается с помощью cid, но для таблиц с идентификатором 351, 350, 349 с cid 322 каждая имеет сумму 3, а точную сумму составляет 3, является ли она равной 9? – Nyranith

+0

На самом деле отображается идентификатор PID, который имеет PID как 400,399,314,314,314,300,298 w.r.t CID PID. Когда PID уникален, я должен SUM, так что 9, 3,114 –

+0

. Вы делаете сумму отличной численности на один CID? Если вы можете предоставить фактические данные выборки в таблицах для CID # 340 и # 322 (скрывая личные данные, такие как ваши xxx, yyy, zzz), но лучше показать, КАК ваш расчет «ExactSum» будет помогать. – DRapp

ответ

0
SELECT cid 
    , MIN(id) 
    , SUM(subtotal 
    FROM 
    (SELECT cc.Contact_ID 
      , SUM(HeadCount) subtotal 
      , c.ClientID 
      , c.Client_Name 
      , cc.Contact_Name 
      , cc.Role 
      , cs.Communication 
      , cs.ResponseTime 
      , cs.LeadershipStyle 
      , cs.Trust 
      , cs.Sentiment 
     FROM client c 
     LEFT 
     JOIN client_contact cc 
      ON c.ClientID = cc.Client_ID 
     JOIN process p 
      ON c.ClientID = p.ClientID 
      AND cc.Contact_Process = p.ProcessID 
     JOIN verticals v 
      ON v.VerticalID = cc.Contact_Vertical 
     LEFT 
     JOIN client_sentimental_indicator cs 
      ON cs.ClientContactID = cc.Contact_ID 
     WHERE c.STATUS = 1 
      AND p.ProcessStatus = 0 
      AND cc.status = 0  
     GROUP 
      BY c.ClientID 
      , cc.Contact_ID 
    ) a 
    GROUP 
    BY cid; 
+0

ЕСЛИ я использую выше Query, я получу SUM, но CID должен отображаться повторно. Группа BY устраняет это ... просьба указать другой ответ –

+0

Нет. Адаптируйте этот вариант в свою цель. – Strawberry

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