![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как рассчитать в запросе сумму построчно? [D6, MSSQL]
Denis © (2004-01-12 16:26:00)
Здравствуйте.
Подскажите пожалуйста, как можно реализовать сабж в MSSQL?
Нужно привести в порядок такой запрос(конструкцию, выделенную линиями нужно исправить):
SELECT dbo.[ORGAN ZAK].[NAME ORG], dbo.MESPLANDENGI.SUMMES,
col1=case when day(postdengi.datapost)=1 then postdengi.dengi end,
... ... ...
col31=case when day(postdengi.datapost)=31 then postdengi.dengi end,
{-------------------------------------------------
(col1+col2+col3+col4+col5+col6+col7+col8+col9+col10+col11+col12+col13+col14+col15+col16+
col17+col18+col19+col20+col21+col22+col23+col24+col25+col26+col27+col28+col29+col30+col31) as itogo,
(itogo-dbo.MESPLANDENGI.SUMMES)as saldo, (itogo/dbo.MESPLANDENGI.SUMMES)as procentpl
------------------------------------------------}
FROM ...
Denis (2004-01-13 10:21:00) [1]
>Только что означает )Q1)Q2? Вложенность запросов?
Не знал, что вложенные запросы без этих символов не закрываются...
Если кому интересно, я нашел решение без вложенных запросов, может быть кому-то пригодится:
SELECT MAX(dbo.[ORGAN ZAK].[NAME ORG]) as Nameorg,SUM( dbo.MESPLANDENGI.SUMMES) as summes,
col1=sum(case when day(postdengi.datapost)=1 then postdengi.dengi end),
... ... ...
col31=Sum(case when day(postdengi.datapost)=31 then postdengi.dengi end),
itogo= Sum(dengi),
procentpl=sum(dengi)*100/sum(summes),
saldo=sum(dengi)-sum(summes)
FROM ...
GROUP BY dbo.[ORGAN ZAK].[KOD ORG]
Denis (2004-01-12 16:53:00) [2]
Спасибо, попробую.
Только что означает )Q1)Q2? Вложенность запросов?
ZrenBy (2004-01-12 16:48:00) [3]
Можно
select
dbo.[ORGAN ZAK].[NAME ORG],
dbo.MESPLANDENGI.SUMMES,
c1,...,c31,itogo,
(itogo-dbo.MESPLANDENGI.SUMMES)as saldo,
(itogo/dbo.MESPLANDENGI.SUMMES)as procentpl
from(
select
dbo.[ORGAN ZAK].[NAME ORG],
dbo.MESPLANDENGI.SUMMES,
c1,...,c31,
itogo = c1+...+c31
from(
select
dbo.[ORGAN ZAK].[NAME ORG],
dbo.MESPLANDENGI.SUMMES,
c1 = ...
...
c31 =
from ...
)Q1)Q2
Оптимизатор отдыхает
Denis (2004-01-12 16:42:00) [4]
>Ega23 © (12.01.04 16:38) [3]
Этот прием я использовал до этого времени.
Но в данный момент задался вопросом - как это сделать именно на SQL?
Denis (2004-01-12 16:38:00) [5]
Согласен. Это выражение продиктовано отчаянием :-(
Его (и не только) и нужно заменить правильной конструкцией...
Ega23 (2004-01-12 16:38:00) [6]
А в Query вычисляемое поле добавить? И в OnCalcFields сумму считать?
Johnmen (2004-01-12 16:30:00) [7]
Вызывает сильное сомнение применимость алиаса поля в селективном выражении... itogo-dbo.MESPLANDENGI.SUMMES