02.02.2006, 18:13 | #81 |
----------------
|
Извините, что встрял, этот запрос вообще вернет полную лажу, так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)
а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0. |
|
02.02.2006, 18:16 | #82 |
злыдень
|
Цитата:
Сообщение от chel
Продолжим меряние
Есть небольшие проблемы в этом запросе 1. Он не учтет ту номенклатуру, по которой сейчас нет остатков. Например, если 31 декабря по "чистой" номенклатуре был сделан приход 5 шт, а 2 января расход -5, то на 1 января остаток не отобразится. 2. Даже, если сделать full outer join этих таблиц, чтобы решить п.1., то к этому никак не прикрутить еще и InventDim с отбором хотя бы по складу (а как жить без этого ) 1. Да ну??? А вы в инвентсам заглянуть и проверить свои домыслы не пробовали? Записи из инвентсама не удаляются. Они обнуляются. Описанная Вами ситуация невозможно ни первого, ни второго января 2. Т.к. решать пункт 1 не нужно, объяснять как прикрутить инвентлокэйшен надеюсь тоже не нужно? Вобщем сдавайся давай!!!
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 18:18 | #83 |
злыдень
|
Цитата:
Сообщение от Wamr
Извините, что встрял, этот запрос вообще вернет полную лажу, так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)
а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 18:24 | #84 |
----------------
|
Цитата:
Не понял...
выборка будет такая InventSum1, InventTrans1 InventSum1, InventTrans2 InventSum1, InventTrans3 а теперь суммируем.. |
|
02.02.2006, 18:25 | #85 |
Участник
|
Цитата:
Сообщение от Recoilme
1. Да ну??? А вы в инвентсам заглянуть и проверить свои домыслы не пробовали? Записи из инвентсама не удаляются. Они обнуляются. Описанная Вами ситуация невозможно ни первого, ни второго января
Зато Alexius дело говорит. Один Sum соединится со многими Trans и в Trans.Qty получится фиговый. Wamr, а ведь max тоже не пройдет. Что он даст например в случае: Sum = 10 Trans1 = 5 Trans2 = 5 |
|
02.02.2006, 18:31 | #86 |
злыдень
|
Цитата:
Сообщение от chel
Признаю, затупил.
Зато Alexius дело говорит. Один Sum соединится со многими Trans и в Trans.Qty получится фиговый. Wamr, а ведь max тоже не пройдет. Что он даст например в случае: Sum = 10 Trans1 = 5 Trans2 = 5
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 18:35 | #87 |
злыдень
|
Цитата:
Сообщение от Wamr
Есть 1 InventSum и есть 3 InventTrans (по одной номенклатуре-аналитике)
выборка будет такая InventSum1, InventTrans1 InventSum1, InventTrans2 InventSum1, InventTrans3 а теперь суммируем.. И продатаареаид - тоже забЫл потому что мы аксапту запускаем с ключём -ноудатаареаид Вобщем тормоз я А chel всё равно не прав и карфаген должен быть разрушен (С) Вобщем всем пока, до новых встреч в эфире
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
02.02.2006, 18:38 | #88 |
Участник
|
Цитата:
Сообщение от Wamr
Извините, что встрял, этот запрос вообще вернет полную лажу,
Цитата:
Сообщение от Wamr
так как вместо SUM(dbo.INVENTSUM.POSTEDQTY) надо MAX(dbo.INVENTSUM.POSTEDQTY)
Цитата:
Сообщение от Wamr
а вот с chel не согласен.В запросе нет ограничений на InventSum, а сам он никогда не чиститься, даже если всё = 0.
|
|
02.02.2006, 18:42 | #89 |
Участник
|
Цитата:
Сообщение от Alexius
ну проблему с умножением этого остатка на кол-во проводок это действительно решит, остается еще включить в запрос остатки сформированные проводками до 01.01.06
|
|
02.02.2006, 18:57 | #90 |
злыдень
|
Цитата:
Сообщение от Alexius
ну проблему с умножением этого остатка на кол-во проводок это действительно решит, остается еще включить в запрос остатки сформированные проводками до 01.01.06
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 02.02.2006 в 19:02. |
|
02.02.2006, 19:01 | #91 |
злыдень
|
ТЫТЫСЫБЕГИН
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 |
Участник
|
Цитата:
Сообщение от chel
Зачем включать? Там же left outer join стоит. Включать не придется. Те остатки, по которым нет проводок после 01.01 - все равно попасть должны.
|
|
02.02.2006, 19:10 | #93 |
Участник
|
Цитата:
Теперь всё правильно???
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 |
----------------
|
пора перемещаться на SQL.RU
Alexius дело говорит, слушайте его |
|
02.02.2006, 19:13 | #95 |
Участник
|
Цитата:
Сообщение от 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 |
----------------
|
Еще ремарка
SUM(ISNULL(dbo.INVENTTRANS.QTY, 0)) |
|
02.02.2006, 19:17 | #97 |
Участник
|
Alexius, а где же обещанное включение в запрос проводок "до 01.01.06"?
И кстати, мы углубились уже в такие запросы, которые собственно из аксапты "никак" |
|
02.02.2006, 19:20 | #98 |
----------------
|
chel синеньким выделено
|
|
02.02.2006, 19:25 | #99 |
Участник
|
Цитата:
Сообщение от chel
Alexius, а где же обещанное включение в запрос проводок "до 01.01.06"?
|
|
02.02.2006, 19:28 | #100 |
Участник
|
Цитата:
Сообщение от Alexius
Проводки и не надо включать, я имел в виду остатки, хранящиеся в InventSum по которым не было проводок после 01.01.06 (то есть они сформированы проводками до 01.01.06), и это сделано
|
|
Теги |
остатки, ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Остатки на дату InventSumDatePhysical | 6 | |||
Остатки товара на определенную дату | 7 | |||
Скачут остатки | 3 | |||
Цена на дату создания заказа/закупки | 2 | |||
Остатки | 6 |
|