Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как получить сумму по полю по уникальному ID другого поля  [new]
igor888
Guest
Доброго дня.
Подзапросом вытаскиваю данные след вида:
ID ID2 1 2 3
1. 1 10 500 250 50
2. 1 11 500 250 150
3. 1 11 500 250 30
4. 2 10 500 300 25
5. 2 10 500 300 35
6. 2 11 500 300 40

Нужно проссумировать колонку 1 и 2 по уникальному значению ID , а колонку 3 по уникальному значению ID2.
Результат должен быть таков:

ID2 1 2 3
10 1000 550 100
11 1000 550 220

Спасибо!
18 дек 13, 10:21    [15309151]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
user89
Member

Откуда:
Сообщений: 2083
igor888,

а какая версия сервера?
18 дек 13, 11:32    [15309681]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
user89
Member

Откуда:
Сообщений: 2083
а хотя ниже 2005 навряд ли...

igor888, а по 3-й колонке уже 110 выходит.
Приведите новые цифры с результатом по 1-му и 2-му столбцу. И чтобы все шесть цифр были разные, а то непонятно, что должно получиться в итоге.
18 дек 13, 11:45    [15309808]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
Нужно проссумировать колонку 1 и 2 по уникальному значению ID ,

Для предложенных данных результат будет
ID12
11500750
21500900

igor888
, а колонку 3 по уникальному значению ID2.

ID23
1075
11220
18 дек 13, 11:54    [15309893]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
aleks2
Guest
99% за то, что тредстартер мучительно делает сложносочиненную выборку, чтобы затем еще и помучиться с суммированием.

ЗЫ. Требуемое лехко делаецца двумя группировками с последующим джойном.
18 дек 13, 11:59    [15309931]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
igor888
Guest
user89,

да, почитав то что на форуме пишут... фишки такие появились выше 2005... мне надо на 2-хтоннике
18 дек 13, 12:44    [15310347]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
o-o
Guest
"оригинальная интерпретация по уникальному значению ID"
с подгоном под конечный результат

declare @t table (id int, id2 int, col1 int, col2 int, col3 int);
insert into @t values
 (1, 10, 500, 250, 50),
 (1, 11, 500, 250, 150),
 (1, 11, 500, 250, 30),
 (2, 10, 500, 300, 25),
 (2, 10, 500, 300, 35),
 (2, 11, 500, 300, 40);
 
 
 select t1.id2, t1.col1, t1.col2, t2.col3
 from
 
 (
 select id2, SUM(col1) as col1, SUM(col2) as col2
 from (select distinct id, id2, col1, col2 from @t) t
 group by id2
 )t1
      join
 (
 select id2, SUM(col3) as col3
 from @t
 group by id2
 )t2
 
      on t1.id2 = t2.id2
-----------------------------------
id2	col1	col2	col3
10	1000	550	110
11	1000	550	220
18 дек 13, 14:07    [15311241]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
Dis07
Member

Откуда:
Сообщений: 4
o-o
"оригинальная интерпретация по уникальному значению ID"
с подгоном под конечный результат

with a(id, id2, col1, col2, col3) as (values
 (1, 10, 500, 250, 50),
 (1, 11, 500, 250, 150),
 (1, 11, 500, 250, 30),
 (2, 10, 500, 300, 25),
 (2, 10, 500, 300, 35),
 (2, 11, 500, 300, 40))
select * from (values (10, 1000, 550, 100),(11, 1000, 550, 220)) as b (id2, col1, col2, col3)
-----------------------------------
          ID2            COL1            COL2            COL3
           10           1,000             550             100
           11           1,000             550             220
********  End of data  ********                              

Проверка на работе ibm db2 as400
18 дек 13, 14:54    [15311823]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
o-o
Guest
Dis07,

что за наезд?
у Вас чистой воды подгон,
а у меня как раз попытка "перевода" фразы автора
про сумму по уникальным id.
он суммирует для каждого id2 только строки с различными id,
как и было заявлено в теме топика
:P
18 дек 13, 15:06    [15311939]     Ответить | Цитировать Сообщить модератору
 Re: Как получить сумму по полю по уникальному ID другого поля  [new]
o-o
Guest
причем в таком виде задача вообще некорректная,
т.к. в его примере по "магии данных"
select distinct id, id2, col1, col2 from @t
и
select distinct id, id2 from @t
возвращают одинаковое число строк, т.е. "повезло".
а вот если добавить еще строку вида к тестовым данным,
(2, 11, 10000, 300, 40)
то сумма по id2 = 11 какая будет, 1000 или 10500?
---------------------------------------------------------------
сдается мне, что у него просто денормализовали нечто,
отсюда и уверенность, что каждой комбинации id, id2 соответствует уникальное col1 (col2)
18 дек 13, 15:21    [15312064]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить