[ОТВЕТИТЬ]
Опции темы
18.11.2015 08:42  
DMaslov
Благодаря Ferus познакомился с бизнес-анализом, обзовем его "наполовину программированием".

Как я понимаю, залезать в алгоритм составления запроса себе дороже, пока хочу выяснить пределы, в которых можно работать. Добавить простейший подзапрос count(1) - это понятно. А вот такой?

SQL код:
 select nvl(sum(
                                   
decode(head.doctype,
                                          
'WI'spc.quantity,
                                          
'CR'spc.quantity,
                                          
'CS', -spc.quantity,
                                          
'WO', -spc.quantity,
                                          
0
                                         
)
                               ), 
0
                           
quantity
     
      from smdocuments head
smspec spc
     where head
.doctype spc.doctype
       
and head.id spc.docid
       
and head.createdat <= {ФильтрРеализацияДатаFDateLast}
       and 
head.docstate in(23)
       and (
                 
head.location = {Место храненияКод места хранения}
              or 
head.locationfrom = {Место храненияКод места хранения}
              or 
head.locationto = {Место храненияКод места хранения}
           )
       and 
spc.article = {Карточка товараАртикул
ORA-22818: выражения подзапросов здесь запрещены.


И еще вопрос - зачем он группирует по кол-ву в отчете о реализации? Как это в интерфейсе убрать?

SQL код:
 SELECT (CRD.Article) as Field4,
        (
CRD.Name) as Field5,
        
round((nvl(D.RealQty0)), 3) as Field6,
        
round((nvl(D.RealSum0)), 4) as Field7,
        (
LOC.Name) as Field2,
        
round((SUM(nvl(D.RealSum0))), 4) as Field3
   FROM SMStoreLocations LOC
,
        
SVCardName CRD,
        (
SELECT CreateDatStoreLocArticleRealQtyRealSum
           FROM supermag
.SVAReal R
          WHERE CreateDat between to_date
('01.11.2015''DD.MM.YYYY') and
                
to_date('17.11.2015''DD.MM.YYYY')
            and 
R.StoreLoc 13D
  WHERE D
.Article CRD.Article
    
and D.StoreLoc LOC.ID
  GROUP BY 
(LOC.Name),
           (
CRD.Article),
           (
CRD.Name),
           
round((nvl(D.RealQty0)), 3),  --------------
           
round((nvl(D.RealSum0)), 4)
  
ORDER BY 1 ASC2 ASC3 ASC4 ASC5 ASC 
 
18.11.2015 09:06  
DMaslov
И на более простой подзапрос ругается "ORA-22818: выражения подзапросов здесь запрещены."

SQL код:
            select g.quantity
              from supermag
.smgoods g
             where g
.storeloc = {Место храненияКод места хранения}
               and 
g.article = {Карточка товараАртикул
 
18.11.2015 09:07  
DMaslov
Видимо, пытается его в группировку тоже вставить.
 
18.11.2015 09:28  
Ferus
Если убрать свои поля то у тебя получается какой-то список.
Так вот запрос для твоего поля должен содержать одну запись для каждой строки основной выборки.
А чем не устраивает стандартная задача "реализация за период"? Там остатки есть и на начало периода и на конец.
И зачем их собирать из первички?
Если не устраивает стандартная, то на форуме проскакивала функция получения остатков(возможно ошибаюсь). Нужно поискать
 
18.11.2015 09:45  
Ferus
Цитата:
Сообщение от DMaslov
И на более простой подзапрос ругается "ORA-22818: выражения подзапросов здесь запрещены."

SQL код:
            select g.quantity
              from supermag
.smgoods g
             where g
.storeloc = {Место храненияКод места хранения}
               and 
g.article = {Карточка товараАртикул
У тебя по запросу идет группировка по реализации. Ведь не каждую продажу отображаешь.
Поэтому к твоему полю должна быть применена какая либо функция.
Так как как в supermag.smgoods остатки не поменяются сколько раз бы ты не запросил, то делаешь среднее значение для этого поля.


Сейчас проверил все работает
 
18.11.2015 11:49  
DMaslov
Цитата:
Сообщение от Ferus
Если убрать свои поля то у тебя получается какой-то список.
Так вот запрос для твоего поля должен содержать одну запись для каждой строки основной выборки.
Так и есть, primary key SMGOODS - ARTICLE, STORELOC.

Цитата:
А чем не устраивает стандартная задача "реализация за период"? Там остатки есть и на начало периода и на конец.
Не увидел такой. Версия 1.030.1 SP4.



Цитата:
И зачем их собирать из первички?
Другого способа пока не знаю.

Цитата:
Сейчас проверил все работает
Возможно у нас отличаются настройки задачи.

 
18.11.2015 11:55  
Mtirt
При создании новой задачи появляется список возможных кубов Бизнес-Анализа.
Вот там в списке и надо искать "Реализация за период".
 
18.11.2015 12:02  
Ferus
Проверял на версии 1.031.1

Создать задачу и в списке есть реализация за период


А вот пример поля остаток из goods

 
"Спасибо" Ferus от:
18.11.2015 12:08  
Mtirt
И чем тебе не нравятся "Остатки на начало периода" и "Остатки на конец периода"?
Они есть в модели...
 
"Спасибо" Mtirt от:
18.11.2015 12:36  
Ferus
Цитата:
Сообщение от Mtirt
И чем тебе не нравятся "Остатки на начало периода" и "Остатки на конец периода"?
Они есть в модели...
Я того же мнения, зачем городить

Я не топик стартер :)
 
 


Опции темы



Часовой пояс GMT +3, время: 08:57.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.