Показать сообщение отдельно
Старый 02.02.2006, 15:53   #77  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от chel
В том подходе, который здесь озвучили (вычитание оборотов с даты получения остатков до текущего момента) нужно сначала запросить InventSum - а потом через некоторое (продолжительное) время InventTrans, в который в момент выполнения запроса к InventSum кто-то третий добавляет записи, т.к. InventTrans пока не блокирован. Да если бы он и был блокирован - то добавлять записи никто бы не помешал - все-таки это не тот уровень изоляции.

По поводу повторной шпильки в мой адрес: еще раз говорю - напишите Ваш Корректный Алгоритм, который корректно отработает эту ситуацию. Мне он не очевиден пока.
Остатки на 01 января
PHP код:
ТЫТЫСЫБЕГИН

SELECT  
[I]ФОРАПДЭЙТ [/ITOP 100 dbo.INVENTSUM.ITEMID AS ITEMIDSUM(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 
        ((
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.ITEMIDdbo.INVENTSUM.INVENTDIMID

ТЫТЫСЫКОММИТ 
Люди, не обращайте внимания на этот код, так делать на реляционной базе не стоит!
Это просты мы с chel пиписьками меряемся..
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/