Показать сообщение отдельно
Старый 02.02.2006, 19:10   #19  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,722 / 1208 (44) ++++++++
Регистрация: 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.