Сумма SQL не работает - PullRequest
       36

Сумма SQL не работает

0 голосов
/ 24 мая 2018

Я пытаюсь сложить общую сумму комиссий на основе идентификаторов, но это приводит к отдельным суммам комиссий.Мне нужно получить данные, основанные на прошлом году

SELECT
fld.fa_id
,sum(commission_amt) as 'Commission Amount'
,date_id
FROM [dbo].[fa_dim] fa, [dbo].[product_summary] fld
WHERE fa.fa_id = fld.fa_id 
AND fld.date_id > 20170523
GROUP BY  fld.fa_id , fld.commission_amt , date_id
ORDER BY fld.fa_id

результаты, которые я получаю, выглядят так:

ID    Commission
7        50
7        12
7        5
8        20
8        10

Мне нужно, чтобы они выглядели так:

ID      Commission 
7           67
8           30 

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

У вас слишком много столбцов в group by и select:

SELECT fld.fa_id, sum(commission_amt) as [Commission Amount]
FROM [dbo].[fa_dim] fa JOIN
     [dbo].[product_summary] fld
     ON fa.fa_id = fld.fa_id AND fld.date_id > 20170523
GROUP BY fld.fa_id 
ORDER BY fld.fa_id;

. group by должен содержать ключи, однозначно определяющие каждую строку в наборе результатов.Поскольку вам нужна одна строка для каждого fld.fa_id, это единственный столбец, необходимый в GROUP BY.

Обратите внимание, что я также исправил синтаксис JOIN.Научитесь использовать правильный, явный, стандартный синтаксис JOIN.Это также плохая идея заключать псевдонимы столбцов в одинарные кавычки.Экранирующий символ в SQL Server - это квадратные скобки.Еще лучше псевдонимы столбцов, которые не нужно экранировать.

0 голосов
/ 24 мая 2018

удалить commission_amt столбец в группе по списку :

SELECT
fld.fa_id
,sum(commission_amt) as 'Commission Amount'
,date_id
FROM [dbo].[fa_dim] fa, [dbo].[product_summary] fld
WHERE fa.fa_id = fld.fa_id 
AND fld.date_id > 20170523
GROUP BY  fld.fa_id ,  date_id
ORDER BY fld.fa_id
...