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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2019, 12:47   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию не выводить нулевые значения

Доброго дня! вопрос, может, и глупый, но все же я его задам.
есть такой запрос
Код:
select (max(id_doc)+1) as id_doc, 0 as id_prod, itog.id_klient, 0 as kod_oper, 0 as num_cex, null as num_doc,
                    round((cast(case when itog.summa>0 then (itog.summa+sum(debet)-0-sum(kredit))
                    else (0+sum(debet)-itog.summa-sum(kredit)) end as float)),2) as summa,
                    '2019-01-01' as data_doc, '2019-01-01' as data_post, null as prim 
                    from (select min(id_doc) as id_doc, klient.id_klient, t1.id_prod, 0 as kod_oper, t1.num_cex, null as num_doc, 
                    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 doc_klient_mrz as t1, klient, ceh 
                    where data_post 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 
                    GROUP BY klient.id_klient, t1.id_prod, t1.num_cex ) as t1, 
                    (select summa, id_klient from Testfso.dbo.doc_klient_mrz t3 where 
                   kod_oper=0 and data_post= '2018-01-01') as itog where t1.id_klient=itog.id_klient and summa <>0
                   GROUP BY itog.id_klient, summa order by itog.id_klient
необходимо, чтобы в результате выводились все значения summa, кроме тех, которые =0. в условии прописала summa <>0, но не выводится только одна строка с summa=0, остальные в результате 15 продолжают быть. какое условие тогда нужно?
Etsareva вне форума Ответить с цитированием
Старый 17.04.2019, 12:56   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сама то хоть понимаешь эту кучу-малу? Запрос, как и код, нужно форматировать. Хотя бы так
Код:
select (max(id_doc)+1) as id_doc, 0 as id_prod, itog.id_klient, 0 as kod_oper, 0 as num_cex, null as num_doc,
    round((cast(case when itog.summa>0 then (itog.summa+sum(debet)-0-sum(kredit))
                     else (0+sum(debet)-itog.summa-sum(kredit)) end as float)),2) as summa,
    '2019-01-01' as data_doc, '2019-01-01' as data_post, null as prim 
  from (select min(id_doc) as id_doc, klient.id_klient, t1.id_prod, 0 as kod_oper, t1.num_cex, null as num_doc, 
            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 doc_klient_mrz as t1, klient, ceh 
          where data_post 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 
          GROUP BY klient.id_klient, t1.id_prod, t1.num_cex ) as t1, 
       (select summa, id_klient 
          from Testfso.dbo.doc_klient_mrz t3 
          where kod_oper=0 and data_post= '2018-01-01') as itog 
  where t1.id_klient=itog.id_klient and summa <>0
  GROUP BY itog.id_klient, summa 
  order by itog.id_klient
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.04.2019 в 12:59.
Аватар вне форума Ответить с цитированием
Старый 17.04.2019, 13:09   #3
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Аватар, спасибо! и тем не менее, как сделать, чтобы summa=0 не выводилась?
Etsareva вне форума Ответить с цитированием
Старый 17.04.2019, 13:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так?

Код:
select * from 
(select (max(id_doc)+1) as id_doc, 0 as id_prod, itog.id_klient, 0 as kod_oper, 0 as num_cex, null as num_doc,
    round((cast(case when itog.summa>0 then (itog.summa+sum(debet)-0-sum(kredit))
                     else (0+sum(debet)-itog.summa-sum(kredit)) end as float)),2) as summa,
    '2019-01-01' as data_doc, '2019-01-01' as data_post, null as prim 
  from (select min(id_doc) as id_doc, klient.id_klient, t1.id_prod, 0 as kod_oper, t1.num_cex, null as num_doc, 
            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 doc_klient_mrz as t1, klient, ceh 
          where data_post 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 
          GROUP BY klient.id_klient, t1.id_prod, t1.num_cex ) as t1, 
       (select summa, id_klient 
          from Testfso.dbo.doc_klient_mrz t3 
          where kod_oper=0 and data_post= '2018-01-01') as itog 
  where t1.id_klient=itog.id_klient
  GROUP BY itog.id_klient, summa ) itog2
where itog2.summa<>0
order by itog2.id_klient
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2019, 13:27   #5
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заменить нулевые значения или пустые ячейки на длинное тире nafanja2007 Microsoft Office Excel 5 03.06.2016 09:07
как выводить значения от наибольшего к наименьшему Faton 11 Общие вопросы C/C++ 1 06.11.2012 20:25
в результате нулевые значения... renzo111 Паскаль, Turbo Pascal, PascalABC.NET 1 11.01.2012 07:13
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 LeX2009 БД в Delphi 14 21.05.2010 16:49
Как выводить значения отдельных полей таблицы при выборе записи в DBGrid Sinker БД в Delphi 9 25.03.2009 12:28