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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.02.2006, 18:13   #81  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Извините, что встрял, этот запрос вообще вернет полную лажу, так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)

а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0.
Старый 02.02.2006, 18:16   #82  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от chel
Продолжим меряние

Есть небольшие проблемы в этом запросе
1. Он не учтет ту номенклатуру, по которой сейчас нет остатков. Например, если 31 декабря по "чистой" номенклатуре был сделан приход 5 шт, а 2 января расход -5, то на 1 января остаток не отобразится.

2. Даже, если сделать full outer join этих таблиц, чтобы решить п.1., то к этому никак не прикрутить еще и InventDim с отбором хотя бы по складу (а как жить без этого )
Ага, развлекуха.. Во всяком случае пока модераторы не проснутся
1. Да ну??? А вы в инвентсам заглянуть и проверить свои домыслы не пробовали? Записи из инвентсама не удаляются. Они обнуляются. Описанная Вами ситуация невозможно ни первого, ни второго января
2. Т.к. решать пункт 1 не нужно, объяснять как прикрутить инвентлокэйшен надеюсь тоже не нужно?

Вобщем сдавайся давай!!!
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 02.02.2006, 18:18   #83  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от Wamr
Извините, что встрял, этот запрос вообще вернет полную лажу, так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)

а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0.
Не понял... Что за наезд на мой маленький запросик? С какой это стати там макс должен быть???
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 02.02.2006, 18:24   #84  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Не понял...
Есть 1 InventSum и есть 3 InventTrans (по одной номенклатуре-аналитике)
выборка будет такая
InventSum1, InventTrans1
InventSum1, InventTrans2
InventSum1, InventTrans3
а теперь суммируем..
Старый 02.02.2006, 18:25   #85  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Цитата:
Сообщение от Recoilme
1. Да ну??? А вы в инвентсам заглянуть и проверить свои домыслы не пробовали? Записи из инвентсама не удаляются. Они обнуляются. Описанная Вами ситуация невозможно ни первого, ни второго января
Признаю, затупил.
Зато Alexius дело говорит. Один Sum соединится со многими Trans и в Trans.Qty получится фиговый.
Wamr, а ведь max тоже не пройдет. Что он даст например в случае:
Sum = 10
Trans1 = 5
Trans2 = 5
Старый 02.02.2006, 18:31   #86  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от chel
Признаю, затупил.
Зато Alexius дело говорит. Один Sum соединится со многими Trans и в Trans.Qty получится фиговый.
Wamr, а ведь max тоже не пройдет. Что он даст например в случае:
Sum = 10
Trans1 = 5
Trans2 = 5
Нормально "даст"
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 02.02.2006, 18:35   #87  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от Wamr
Есть 1 InventSum и есть 3 InventTrans (по одной номенклатуре-аналитике)
выборка будет такая
InventSum1, InventTrans1
InventSum1, InventTrans2
InventSum1, InventTrans3
а теперь суммируем..
Торопился, сорри
И продатаареаид - тоже забЫл потому что мы аксапту запускаем с ключём -ноудатаареаид
Вобщем тормоз я
А chel всё равно не прав и карфаген должен быть разрушен (С)
Вобщем всем пока, до новых встреч в эфире
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 02.02.2006, 18:38   #88  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Wamr
Извините, что встрял, этот запрос вообще вернет полную лажу,
запрос действительно не даст корректных остатков на дату как я писал выше,
Цитата:
Сообщение от Wamr
так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)
ну проблему с умножением этого остатка на кол-во проводок это действительно решит, остается еще включить в запрос остатки сформированные проводками до 01.01.06
Цитата:
Сообщение от Wamr
а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0.
и это прекрасно, что не чиститься !
Старый 02.02.2006, 18:42   #89  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Цитата:
Сообщение от Alexius
ну проблему с умножением этого остатка на кол-во проводок это действительно решит, остается еще включить в запрос остатки сформированные проводками до 01.01.06
Зачем включать? Там же left outer join стоит. Включать не придется. Те остатки, по которым нет проводок после 01.01 - все равно попасть должны.
Старый 02.02.2006, 18:57   #90  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от Alexius
ну проблему с умножением этого остатка на кол-во проводок это действительно решит, остается еще включить в запрос остатки сформированные проводками до 01.01.06
Стоп-стоп-стоп. А зачем их включать? Идиотская задача была в том чтобы из текущих остатков вычесть проводки сформированный с даты Ф и вычесть их, чтобы получуть остатки на дату Ф....
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/

Последний раз редактировалось Recoilme; 02.02.2006 в 19:02.
Старый 02.02.2006, 19:01   #91  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
ТЫТЫСЫБЕГИН

SELECT ФОРАПДЭЙТ TOP 100 dbo.INVENTSUM.ITEMID AS ITEMID, MAX(dbo.INVENTSUM.POSTEDQTY) - SUM(dbo.INVENTTRANS.QTY) AS QTY,
dbo.INVENTSUM.INVENTDIMID
FROM dbo.INVENTSUM LEFT OUTER JOIN
dbo.INVENTTRANS ON dbo.INVENTSUM.INVENTDIMID = dbo.INVENTTRANS.INVENTDIMID AND
dbo.INVENTSUM.ITEMID = dbo.INVENTTRANS.ITEMID
WHERE (dbo.INVENTTRANS.DATEPHYSICAL >= CONVERT(DATETIME, '2006-01-01 00:00:00', 102)) AND ДАТААРЕАИД = ЧТОТО AND
((dbo.INVENTTRANS.STATUSRECEIPT = 1) OR
(dbo.INVENTTRANS.STATUSISSUE = 1) OR
(dbo.INVENTTRANS.STATUSRECEIPT = 2) OR
(dbo.INVENTTRANS.STATUSISSUE = 2) OR
(dbo.INVENTTRANS.STATUSRECEIPT = 3) OR
(dbo.INVENTTRANS.STATUSISSUE = 3))
GROUP BY dbo.INVENTSUM.ITEMID, dbo.INVENTSUM.INVENTDIMID

ТЫТЫСЫКОММИТ

Теперь всё правильно???
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 02.02.2006, 19:05   #92  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от chel
Зачем включать? Там же left outer join стоит. Включать не придется. Те остатки, по которым нет проводок после 01.01 - все равно попасть должны.
Согласно обсуждаемому запросу НЕТ, так как есть условия на поля из таблицы InventTrans
Старый 02.02.2006, 19:10   #93  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Теперь всё правильно???
Ну, если совсем уж правильно, то нужно:

MAX(InventSum) - IsNull(SUM(InventTrans),0)

И DataAreaId на обе таблицы

Да, при LEFT JOIN в директиве WHERE допустимы только условия на таблицу InventSum, а все условия на таблицу InventTrans надо перенести в условия объединения:

Код:
SELECT
	InventSum.ItemId,
	InventSum.InventDimId,
	MAX(InventSum.PostedQty) - IsNull(SUM(InventTrans.Qty),0) as Qty
FROM InventSum
LEFT JOIN InventTrans ON InventSum.InventDimId = InventTrans.InventDimId
		AND InventSum.ItemId = InventTrans.ItemId
		AND InventSum.DataAreaId = InventTrans.DataAreaId
		AND InventTrans.DatePhysical >= '20060101'
		AND (InventTrans.StatusIssue IN (1,2,3) 
			OR InventTrans.StatusReceipt IN (1,2,3))
WHERE InventSum.DataAreaId = ...
GROUP BY 
	InventSum.ItemId,
	InventSum.InventDimId

Последний раз редактировалось Владимир Максимов; 02.02.2006 в 19:19.
Старый 02.02.2006, 19:13   #94  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
пора перемещаться на SQL.RU
Alexius дело говорит, слушайте его
Старый 02.02.2006, 19:13   #95  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Recoilme
Теперь всё правильно???
НЕА

ТЫТЫСЫБЕГИН

SELECT ФОРАПДЭЙТ TOP 100 dbo.INVENTSUM.DATAAREAID, dbo.INVENTSUM.ITEMID AS ITEMID, MAX(dbo.INVENTSUM.POSTEDQTY) - ISNULL(SUM(dbo.INVENTTRANS.QTY),0) /*Спасибо Владимиру Максимову*/ AS QTY,
dbo.INVENTSUM.INVENTDIMID
FROM dbo.INVENTSUM LEFT OUTER JOIN
dbo.INVENTTRANS ON dbo.INVENTSUM.INVENTDIMID = dbo.INVENTTRANS.INVENTDIMID AND
dbo.INVENTSUM.ITEMID = dbo.INVENTTRANS.ITEMID AND
dbo.INVENTSUM.DATAAREAID = dbo.INVENTTRANS.DATAAREAID

WHERE dbo.INVENTSUM.DATAAREAID = 'ABC' AND ((dbo.INVENTTRANS.RECID IS NULL) OR ((dbo.INVENTTRANS.DATEPHYSICAL >= CONVERT(DATETIME, '2006-01-01 00:00:00', 102)) AND ((dbo.INVENTTRANS.STATUSRECEIPT = 1) OR
(dbo.INVENTTRANS.STATUSISSUE = 1) OR
(dbo.INVENTTRANS.STATUSRECEIPT = 2) OR
(dbo.INVENTTRANS.STATUSISSUE = 2) OR
(dbo.INVENTTRANS.STATUSRECEIPT = 3) OR
(dbo.INVENTTRANS.STATUSISSUE = 3)) )
GROUP BY dbo.INVENTSUM.DATAAREAID, dbo.INVENTSUM.ITEMID, dbo.INVENTSUM.INVENTDIMID

ТЫТЫСЫКОММИТ

Последний раз редактировалось Alexius; 02.02.2006 в 19:19.
Старый 02.02.2006, 19:16   #96  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Еще ремарка
SUM(ISNULL(dbo.INVENTTRANS.QTY, 0))
Старый 02.02.2006, 19:17   #97  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Alexius, а где же обещанное включение в запрос проводок "до 01.01.06"?

И кстати, мы углубились уже в такие запросы, которые собственно из аксапты "никак"
Старый 02.02.2006, 19:20   #98  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
chel синеньким выделено
Старый 02.02.2006, 19:25   #99  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от chel
Alexius, а где же обещанное включение в запрос проводок "до 01.01.06"?
Проводки и не надо включать, я имел в виду остатки, хранящиеся в InventSum по которым не было проводок после 01.01.06 (то есть они сформированы проводками до 01.01.06), и это сделано
Старый 02.02.2006, 19:28   #100  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Цитата:
Сообщение от Alexius
Проводки и не надо включать, я имел в виду остатки, хранящиеся в InventSum по которым не было проводок после 01.01.06 (то есть они сформированы проводками до 01.01.06), и это сделано
Да, точно... Что можно сказать - жжошь. Пеши чаще.
Теги
остатки, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Остатки на дату InventSumDatePhysical Raven Melancholic DAX: Программирование 6 10.05.2007 15:29
Остатки товара на определенную дату Lucky13 DAX: Программирование 7 27.03.2007 14:27
Скачут остатки Def DAX: Программирование 3 03.05.2006 14:27
Цена на дату создания заказа/закупки George Nordic DAX: Функционал 2 29.06.2005 15:56
Остатки dog37 DAX: Программирование 6 02.06.2005 11:25
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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