Reputation: 3479
A have for example following data:
a 10
b 5
c 15
d 2
a 3
b 6
c 8
d 10
How to sum a
and b
together and c
and d
to get something like this?
ab 24
cd 35
Upvotes: 0
Views: 95
Reputation: 35583
looks like a good opportunity for between to me:
| CODE_RANGE | RANGE_VALUE |
|------------|-------------|
| ab | 24 |
| cd | 35 |
SELECT
CASE
WHEN code BETWEEN 'a' AND 'b' THEN 'ab'
WHEN code BETWEEN 'c' AND 'd' THEN 'cd' END AS code_range
, SUM(value) AS range_value
FROM Table1
GROUP BY
CASE
WHEN code BETWEEN 'a' AND 'b' THEN 'ab'
WHEN code BETWEEN 'c' AND 'd' THEN 'cd' END
see: http://sqlfiddle.com/#!3/a6b7e3/1
Upvotes: 1
Reputation: 6073
this could also help you,
DECLARE @TAB TABLE(NAME VARCHAR(1), MARK INT)
INSERT INTO @TAB VALUES
('A',10),
('B', 5),
('C',15),
('D', 2),
('A', 3),
('B', 6),
('C', 8),
('D',10)
SELECT NAME,SUM(MARK)
FROM (
SELECT CASE WHEN NAME IN ('A','B') THEN 'AB' WHEN NAME IN ('C','D') THEN 'CD' END NAME,
MARK
FROM @TAB A
) LU
GROUP BY NAME
Upvotes: 2
Reputation: 204756
select sum(case when col1 in ('a','b') then col2 end) as ab_sum,
sum(case when col1 in ('c','d') then col2 end) as cd_sum
from your_table
Upvotes: 3
Reputation: 18629
Try:
select
'ab' col1,
SUM(col2) col2
from tbl
where col1 in ('a', 'b')
union
select
'cd',
SUM(col2)
from tbl
where col1 in ('c', 'd')
Upvotes: 1
Reputation: 6255
SELECT
(CASE col1
WHEN 'a' THEN 'ab'
WHEN 'b' THEN 'ab'
WHEN 'c' THEN 'cd'
WHEN 'd' THEN 'cd'
END) x,
SUM(col2) y
FROM tbl
GROUP BY (CASE col1
WHEN 'a' THEN 'ab'
WHEN 'b' THEN 'ab'
WHEN 'c' THEN 'cd'
WHEN 'd' THEN 'cd'
END)
Upvotes: 0