Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Существует ли хитрость с группировкой?  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
Есть некий список клиентов (подмножество из таблицы, задаваемое некими условиями).
По клиентам нужно получить несколько сумм.

Это могут быть суммы остатков по счетам, определяемым масками в разрезе клиента, или это могут быть резервные счета, связанные со счетами актива (задаваемые другим набором масок) через таблицу-связку, или ещё какие-то суммы по остаткам с других счетов.

Если суммировать в одном запросе
sum(rez1), sum(rez2), sum(rez3)
--куча джойнов...
group by client_id
то в суммах будут задвоения.

Можно на каждую сумму выделять по запросу с группировакой по ней
INSERT INTO @clients 
SELECT SUM(rez1)
...
GROUP BY client_id

 ;WITH cte_clients
        AS
        (
            SELECT SUM(rez2)
...
GROUP BY client_id
 )
UPDATE @clients
...


 ;WITH cte_clients
        AS
        (
            SELECT SUM(rez3)
...
GROUP BY client_id
 )
UPDATE @clients
...

Или есть способ сделать это как-то покомпактнее?
28 ноя 11, 11:45    [11669524]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
З.Ы. 2005-й
28 ноя 11, 11:46    [11669528]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
начинающий sql-гуру
то в суммах будут задвоения.


Наверное надо так написать эту "кучу джойнов", чтобы не было задвоений ?
28 ноя 11, 12:09    [11669739]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
начинающий sql-гуру, на абстрактный вопрос можно придумать только абстрактный ответ вида:
SUM(CASE WHEN ... THEN rez ELSE 0 END) OVER (), а в итоге все сгруппировать. Компактнее будет. Может даже быстрее будет.
28 ноя 11, 12:11    [11669756]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
Glory
начинающий sql-гуру
то в суммах будут задвоения.


Наверное надо так написать эту "кучу джойнов", чтобы не было задвоений ?

Да не... так не получится.
28 ноя 11, 12:13    [11669775]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
Glory
Member

Откуда:
Сообщений: 104751
начинающий sql-гуру
Да не... так не получится.

Ну раз не получится, то забейте.
28 ноя 11, 12:14    [11669786]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
kDnZP
начинающий sql-гуру, на абстрактный вопрос можно придумать только абстрактный ответ вида:
SUM(CASE WHEN ... THEN rez ELSE 0 END) OVER (), а в итоге все сгруппировать. Компактнее будет. Может даже быстрее будет.

Не, не подходит в данном случае.
Думал есть хитрость какая-то, о которой я не догадываюсь.
28 ноя 11, 12:18    [11669817]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
Glory
начинающий sql-гуру
Да не... так не получится.

Ну раз не получится, то забейте.

ОК. Забил.
28 ноя 11, 12:18    [11669820]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
начинающий sql-гуру
kDnZP
начинающий sql-гуру, на абстрактный вопрос можно придумать только абстрактный ответ вида:
SUM(CASE WHEN ... THEN rez ELSE 0 END) OVER (), а в итоге все сгруппировать. Компактнее будет. Может даже быстрее будет.

Не, не подходит в данном случае.
Думал есть хитрость какая-то, о которой я не догадываюсь.

Ну раз не получится, то забейте. (с)
28 ноя 11, 12:18    [11669823]     Ответить | Цитировать Сообщить модератору
 Re: Существует ли хитрость с группировкой?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
начинающий sql-гуру
Думал есть хитрость какая-то, о которой я не догадываюсь.

задвоения получаются не сами собой, а потому что запрос так написан
исправляйте вашу кучу джойнов

вот если в баке бензин заканчивается, вы машину заправите или тоже будете искать какую-то хитрость?
28 ноя 11, 12:28    [11669895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить