Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2019, 09:19   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию суммирование сгруппированных полей

добрый день! подскажите, как просуммировать уже сгруппированные данные?
запрос
Код:
select min(id_doc) as id_doc, klient.id_klient, t1.id_prod, 0 as kod_oper, t1.num_cex, null as num_doc, '2019-01-01' as data_doc, 
sum(cast (case when kod_oper=1 then null else summa end as float))as debet, sum(cast (case when kod_oper=2 then null else summa end as float)) as kredit, null as prim
 from TestFSO.dbo.doc_klient_mrz as t1, TestFSO.dbo.klient, TestFSO.dbo.ceh  where data_doc between '2018-01-02' and '2018-12-31' and (kod_oper=1 or kod_oper=2) and t1.id_klient=klient.id_klient and ceh.code_ceh=t1.num_cex and t1.id_klient=8742
GROUP BY klient.id_klient, t1.id_prod, t1.num_cex order by klient.id_klient
необходимо, чтобы поля debet и kredit были просуммированы полностью.

Код:
id_doc    id_klient   id_prod  num_cex    data_doc    debet       kredit	   
169931      8742	    2	       	440        2019-01-01   45807,3   73953,08    
190626 	8742	    3	        450        2019-01-01   8289,5      NULL
Etsareva вне форума Ответить с цитированием
Старый 21.03.2019, 09:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
необходимо, чтобы поля debet и kredit были просуммированы полностью.
а сейчас они как просуммированы? частично?


вот, например, для этого результата запроса
Цитата:
Сообщение от Etsareva Посмотреть сообщение
Код:
id_doc    	id_klient   id_prod  num_cex    	data_doc    	debet       	kredit	   
169931      	8742	    2	       	440        	2019-01-01   	45807,3   	73953,08    
190626 		8742	    3	        450        	2019-01-01   	8289,5      	NULL
тут что должно быть?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2019, 09:37   #3
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

столбец дебет должен быть просуммирован и сумма = 54096,8, также и кредит.
при этом
Код:
id_prod=(select top 1 t2.id_prod from TestFSO.dbo.doc_klient_mrz as t2 where t1.id_klient=t2.id_klient group by t2.id_klient, t2.id_prod )
Etsareva вне форума Ответить с цитированием
Старый 21.03.2019, 09:42   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Etsareva Посмотреть сообщение
столбец дебет должен быть просуммирован и сумма = 54096,8, также и кредит.
и чему должны быть остальные значения полей (id_doc id_klient id_prod num_cex data_doc)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2019, 09:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ладно, раз Вы не понимаете, о чём идёт речь, тогда попробуйте этот запрос:
Код:
select '2019-01-01' as data_doc, sum(debet) as fullsum_debet, sum(kredit) as fullsum_kredit
from 
(select 
sum(cast (case when kod_oper=1 then 0 else summa end as float))as debet, 
sum(cast (case when kod_oper=2 then 0 else summa end as float)) as kredit
from TestFSO.dbo.doc_klient_mrz as t1, TestFSO.dbo.klient, TestFSO.dbo.ceh  
where data_doc between '2018-01-02' and '2018-12-31' and (kod_oper=1 or kod_oper=2) 
and t1.id_klient=klient.id_klient and ceh.code_ceh=t1.num_cex and t1.id_klient=8742
GROUP BY klient.id_klient, t1.id_prod, t1.num_cex)

Последний раз редактировалось Serge_Bliznykov; 21.03.2019 в 09:49.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2019, 09:47   #6
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

id_doc = max (id_doc)+1, id_klient = 8742, id_prod=(select top 1 t2.id_prod from TestFSO.dbo.doc_klient_mrz as t2 where t1.id_klient=t2.id_klient group by t2.id_klient, t2.id_prod ) ( в данном случае 2), num_cex=440, data_doc='2019-01-01'. если вообще возможно так сделать....
Etsareva вне форума Ответить с цитированием
Старый 21.03.2019, 09:49   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

посмотрите на пример запроса выше.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2019, 10:01   #8
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

спасибо! получилось то, что и было необходимо!
Etsareva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединить несколько сгруппированных строк столбца отчета в одну ячейку чувачек Microsoft Office Access 4 19.07.2013 12:23
Суммирование полей по выборке AngelMarik Помощь студентам 0 20.05.2012 20:07
Поля со списками, суммирование значений из полей, диаграмма depp.88 Microsoft Office Access 11 22.10.2011 12:11
Суммирование двух полей в третьем jennifer120487 Microsoft Office Access 3 26.09.2011 09:52
Суммирование вычисляемых полей smaw1989 Помощь студентам 7 20.12.2010 18:11