Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SELECT и SUM  [new]
аноним
Guest
Есть данные

2003 10.20
2003 10.20
2004 11.20
2004 11.00
2003 11.00

Как сделать SELECT и SUM
чтобы получить результат
суммы по годам в столбцы

2003 2004
31.40 22.20
4 апр 04, 15:01    [611497]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и SUM  [new]
ChA
Member

Откуда: Москва
Сообщений: 11126
SELECT
SUM(CASE [Year] WHEN 2003 THEN [Sum] END) AS [2003],
SUM(CASE [Year] WHEN 2004 THEN [Sum] END) AS [2004]
FROM Table
4 апр 04, 15:30    [611508]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и SUM  [new]
Green2
Member

Откуда: skype: green2x2
Сообщений: 13748
Я собрал пример


--drop table #t


create table #t(a int ,b float)

insert into #t( a, b)
select 2003, 10.20
union
select 2003, 10.20
union
select 2004, 11.20
union
select 2004, 11.00
union
select 2003, 11.00

select * from #t

SELECT
SUM(CASE [a] WHEN 2003 THEN [b] END) AS [2003],
SUM(CASE [a] WHEN 2004 THEN [b] END) AS [2004]
FROM #t

drop table #t


И получил

(4 row(s) affected)

a b
----------- -----------------------------------------------------
2003 10.199999999999999
2003 11.0
2004 11.0
2004 11.199999999999999

(4 row(s) affected)

2003 2004
----------------------------------------------------- -----------------------------------------------------
21.199999999999999 22.199999999999999

(1 row(s) affected)

Warning: Null value is eliminated by an aggregate or other SET operation.
4 апр 04, 16:52    [611538]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и SUM  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
Ну или чтоб от warningа избавится :
SUM(CASE [a] WHEN 2003 THEN [b] ELSE 0 END) AS [2003], 


2 Green2
union all .. :)
4 апр 04, 17:20    [611544]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и SUM  [new]
MVM
Member

Откуда:
Сообщений: 271

--drop table #t


create table #t(a int ,b float)

insert into #t( a, b)
select 2003, 10.20
union
select 2003, 10.20
union
select 2004, 11.20
union
select 2004, 11.00
union
select 2003, 11.00

select * from #t
select [2003] = SUM(c.[2003]), [2004] = SUM(c.[2004])
from ( SELECT [2003] = SUM(b) ,
[2004] = 0
FROM #t
where a = 2003
union all
select [2003] = 0,
[2004] = SUM(b)
FROM #t
where a = 2004 ) c

drop table #t
4 апр 04, 18:25    [611561]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить