AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.11.2005, 14:08   #1  
chi is offline
chi
Участник
 
80 / 13 (1) ++
Регистрация: 21.01.2004
Что-то не могу запрос сконструировать...
Задача.
Нужно вывести в отчет простецкую табличку:
Колонка 1 - инвентарный номер
Колонка 2 - номер счета
Колонка 3 - сумма для данного инвентарного номера и данного счета.
Интересует общий вид запроса без мелочей.
Рисую нижеследующую конструкцию (общий вид, без подробностей) - не получается.

SELECT InventTrans GROUP BY ItemId
JOIN SUM(AmountMST) FROM LedgerTrans GROUP BY AccountNum
WHERE {связка этих двух таблиц}.

Какая конструкция запроса поможет решить проблему?
Старый 17.11.2005, 15:16   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Слишком некорректная формулировка вопроса, чтобы кто-то дал четкий ответ.
"номер счета" - это номер счета ГК?
Вы уверены, что на 1 складскую проводку генерится 1 проводка в ГК?
Старый 17.11.2005, 15:25   #3  
_AnK_ is offline
_AnK_
Участник
Аватар для _AnK_
Ex AND Project
 
160 / 31 (2) +++
Регистрация: 03.11.2005
Адрес: СПб
chi

Разберитесь c таблицей InventTransPosting.
Старый 17.11.2005, 15:39   #4  
chi is offline
chi
Участник
 
80 / 13 (1) ++
Регистрация: 21.01.2004
Цитата:
Сообщение от Wamr
Вы уверены, что на 1 складскую проводку генерится 1 проводка в ГК?
Дык эту проблему решает SUM(AmountMST) и GROUP BY AccountNum

Давайте просто абстрогируемся от функционала. Интересует чисто техническая сторона. Результатом выполнения запроса является перемножение таблиц (по-моему это так называется), хотя вроде не должно.
Старый 17.11.2005, 15:49   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Возможно просто ничего не выбираете (в смысле, все поля) из первой таблички - а там группировка. Поэтому ругается что нет агрегатных функций, или что-то в таком роде
Попробуйте тоже или sum() или max() туда влепить
Старый 17.11.2005, 16:07   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Возьмите 1 накладную с несколькими строчками, посмотрите по ней проводки ГК и складские и попробуйте их сопоставить ручками.
Старый 17.11.2005, 16:10   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Скорее всего в WHERE что-то неправильно.

Поля из группировки автоматом подставляются в запрос. Кроме того даже если их не указывать в запросе в предложении select, то запрос будет выполнен правильно - но узнать какая сумма куда относится мы, понятное дело, не сможем.
__________________
Axapta v.3.0 sp5 kr2
Старый 18.11.2005, 09:36   #8  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
SELECT InventTrans GROUP BY ItemId
JOIN SUM(AmountMST) FROM LedgerTrans GROUP BY AccountNum
WHERE {связка этих двух таблиц}.
ну во первых, интересно посмотреть на весь запрос
а во вторых, то что сразу бросается в глаза Вы группируете InventTrans по ItemId,
т.о. связка должна быть с LedgerTrans именно по ItemId. Возможно в Вашей модификации в LedgerTrans и находится ItemId, но скорее всего нет.
Старый 18.11.2005, 10:12   #9  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
2mit:
Нет, в случае такой группировки связка по ItemId совсем не обязательна - это классика.
Вот даже пример приведу, хотя он и не нужен:
PHP код:
static void Job23(Args _args)
{
    
SalesTable salesTable;
    
SalesLine salesLine;
    ;
    while 
select salesTable
        group by createdDate
CurrencyCode
        join sum
(lineAmountfrom salesLine
            where salesLine
.SalesId == salesTable.SalesId
    
{
        
info(strFmt("%1, %2 - %3"salesTable.createdDatesalesTable.CurrencyCodesalesLine.LineAmount));
    }

__________________
Андрей.

Последний раз редактировалось Dron AKA andy; 18.11.2005 в 11:26.
Старый 18.11.2005, 11:55   #10  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Да, действительно.
Был неправ.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
передача параметров в запрос while select tolstjak DAX: Программирование 13 15.02.2009 19:39
Не могу построить простейший запрос Prof DAX: Программирование 17 12.10.2007 23:37
Как собрать запрос? moid DAX: Программирование 11 02.07.2007 12:07
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Долго отрабатывает запрос по таблице InventItemLocation AlexeyBP DAX: Администрирование 1 30.05.2007 17:33

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:31.