Advanced SQL SUM COLUMN FROM A SAME TABLE

I have this table...

+-----+--------+------+-----+-----+
|categ| nAME   | quan |IDUNQ|   ID|
+-----+--------+------+-----+-----+
|   1 | Z      |    3 |   1 |  15 |
|   1 | A      |    3 |   2 |  16 |
|   1 | B      |    3 |   3 |  17 |
|   2 | Z      |    2 |   4 |  15 |
|   2 | A      |    2 |   5 |  16 |
|   3 | Z      |    1 |   6 |  15 |
|   3 | B      |    1 |   7 |  17 |
|   2 | Z      |    1 |   8 |  15 |
|   2 | C      |    4 |   8 |  15 |
|   1 | D      |    1 |   8 |  15 |
+-----+--------+------+-----+-----+

I need to get the Z of category 1 + Z of category 2 - Z of category 3

For example, (3+3-1) = 5 ==> 3 of cat 1, 3 of cat 2, 1 of cat 3

The final result should be...

Z ==> 5
A ==> 5
B ==> 2
C ==> 4

Upvotes: 2

Views: 3306

Answers (2)

Vaibhav Desai
Vaibhav Desai

Reputation: 2728

SELECT name, SUM(quan) AS sum
FROM   tableName
GROUP BY name, categ

This should work.

Upvotes: -2

lc.
lc.

Reputation: 116528

Note: I'm assuming the data for "C" from your example was mistakenly omitted.

SELECT nAME, SUM(CASE categ WHEN 3 THEN 0-quan ELSE quan END) AS quan
FROM theTable
GROUP BY nAME

SQL Fiddle

Upvotes: 8

Related Questions