Skip to content
Advertisement

Update with SUM in Same SQL Table

I want to update SUM in same SQL table based on project id and Channel. for Total Channel= SUM(Channel 1 + Channel 2)

id | Channel       | Project_id | Column1 | Column 2 | Column 3 |
-----------------------------------------------------------
1    Total Channel   PR1           10         10        10
2    Channel 1       PR1            5         5          5
3    Channel 2       PR1            5         5          5
4    Total Channel   PR2            20        40         30
5    Channel 1       PR2            10        20         15
6    Channel 2       PR2            10        20         15
7    Total Channel   PR3            30        50         10
8    Channel 1       PR3            15        25         5
9    Channel 2       PR3            15        25         5

I am trying with below Query, but something is wrong in this query

UPDATE 
    results AS r 
JOIN
    ( SELECT   project_id, 
               SUM(Column1) AS sum_column1,
               SUM(Column2) AS sum_column2,
               SUM(Column3) AS sum_column3,
      FROM     results 
      WHERE    channel <> 'Total Channel' and project_id=@project_id
      GROUP BY project_id
    ) AS grp
   ON  
       grp.project_id = r.project_id 
SET 
   r.column1 = grp.sum_column1,
   r.column2 = grp.sum_column2,
   r.column3 = grp.sum_column3
WHERE 
   r.project_id = @project_id and r.channel='Total Channel';

Advertisement

Answer

Not sure what your database is but if it is MSSQL Server then it is straight forward using CTE (Common Table Expression):

;with cte_total
(
  select project_id, sum(column1) [c1total], sum(column2) [c2total], sum(column3) [c3total]
  from <YourTableName>
  where channel <> 'Total Channel'
  group by project_id
) 
update t
set column1 = c1Total, column2 = c2total, column3 = c3total
from <YourTableName> t
inner join cte_total ct ON (ct.project_id = t.project_id)
where t.chanel = 'Total Channel'

I have removed spaces from column names to make it easier.

An easier would be to sum up by project id and then insert total rows rather than updating them.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement