Как использовать функции суммирования и подсчета - PullRequest
3 голосов
/ 23 апреля 2010

Я пытаюсь получить общее количество и общую сумму на одного продавца, но это не работает в моем запросе WITH

В настоящее время у меня есть:

 WITH CALC1 AS (
   SELECT B.OTSMAN AS SALESMAN, COUNT(B.ONINUM) AS COUNT, SUM(B.OVSVAL) AS SVAL 
   FROM @LIB@.DGLOESUMD AS B 
   WHERE B.OCSGRP <> 'INT' AND 
         B.OCSGRP <> 'INX' AND 
         B.OCPSBR IN (@OCPSBR@) AND 
         B.ICMATX <> '705' AND 
         B.OCSGRP NOT LIKE 'S/%' 
  GROUP BY B.OTSMAN, B.ONINUM ORDER BY B.OTSMAN ASC
 )
 SELECT SALESMAN, COUNT,  SVAL FROM CALC1 ORDER BY SALESMAN

РЕЗУЛЬТАТ ЭТО:

AM  1   79.03
AM  40  1337.70
AM  48  4627.15
AM  42  2727.40
AM  1   111.79
AM  1   1110.00
AM  52  3018.77

Как мне изменить свой запрос, чтобы я получил только одну запись с общим количеством и стоимостью на одного продавца?

AM  1   13,011.84

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Изменить GROUP BY на

GROUP BY B.OTSMAN

Что-то вроде

;WITH CALC1 AS (
        SELECT  B.OTSMAN AS SALESMAN, 
                COUNT(B.ONINUM) AS COUNT, 
                SUM(B.OVSVAL) AS SVAL 
        FROM    @LIB@.DGLOESUMD AS B 
        WHERE   B.OCSGRP <> 'INT' 
        AND     B.OCSGRP <> 'INX' 
        AND     B.OCPSBR IN (@OCPSBR@) 
        AND     B.ICMATX <> '705' 
        AND     B.OCSGRP NOT LIKE 'S/%' 
        GROUP BY    B.OTSMAN
        ORDER BY    B.OTSMAN ASC
) 

SELECT  

SALESMAN, 
COUNT,  
SVAL 

FROM CALC1 

ORDER BY SALESMAN 
0 голосов
/ 23 апреля 2010

Вам нужно изменить свою группу следующим образом:

with calc1 as 
(select b.otsman as salesman, 
        count(distinct b.oninum) as count, 
        sum(b.ovsval) as sval 
   from @lib@.dgloesumd as b 
  where b.ocsgrp <> 'INT' 
    and b.ocsgrp <> 'INX' 
    and b.ocpsbr in (@ocpsbr@) 
    and b.icmatx <> '705' 
    and b.ocsgrp not like 'S/%' 
 group by b.otsman 
)
select salesman,
       count, 
       sval
  from calc1
order by salesman

Обновление: Обновлено, чтобы получить различное количество заказов на продавца

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...