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

Откуда:
Сообщений: 1090
Есть 2 таблицы
Master
idnameamount
1Type180
2Type290
3Type367

Detail
idparentidnameamount
11Sub130
21Sub233
31Sub360
42Sub130
52Sub566
63Sub830



with cte as
(
 select M.name, M.amount f1, D.name, D.amount f2
 from Master M left join Detail D 
 on M.id=D.parentid
)
select * from cte
union all
select null,sum(f1),null, sum(f2)
from cte

ясно-понятно, что итоги по Master будут кривые. Пока ничего лучше, чем пронумеровать строки по Master.name и отбирать только первую не нашел.
Может есть более красивое решение?
17 июн 13, 16:59    [14443637]     Ответить | Цитировать Сообщить модератору
 Re: Косяк с итогами  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
так а какой результат требуется получить и почему?
17 июн 13, 17:09    [14443707]     Ответить | Цитировать Сообщить модератору
 Re: Косяк с итогами  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
Паганель,
требуется получить в итогах не 240 (для Type1) , а 80. Таким образом вычисляем общий процент содержания Detail в Master
17 июн 13, 17:13    [14443738]     Ответить | Цитировать Сообщить модератору
 Re: Косяк с итогами  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
waszkiewicz, если еще более правильнее, то так (без первой части union)
name amountnameamount
null237null 249
17 июн 13, 17:19    [14443789]     Ответить | Цитировать Сообщить модератору
 Re: Косяк с итогами  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
;with [Master](id, name, amount) as (
select 1, 'Type1', 80 union all
select 2, 'Type2', 90 union all
select 3, 'Type3', 67
), Detail (parentid, name, amount) as (
select 1, 'Sub1', 30 union all
select 1, 'Sub2', 33 union all
select 1, 'Sub3', 60 union all
select 2, 'Sub1', 30 union all
select 2, 'Sub5', 66 union all
select 3, 'Sub8', 30
)
select null name, sum(M.amount), null name2, sum(D.f2)
  from [Master] M
  left join (select parentid, sum(amount) f2
               from Detail
              group by parentid) D on D.parentid = M.ID
17 июн 13, 17:29    [14443863]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить