2013-10-13 2 views
0

У меня есть проблема, чтобы создать запрос для таблицыСоздание SQL строки запроса

mouventDeStock

|| idMv || dateMv ||qteMv || typeMV(bit) || codeMv || 

тип Фейлд является либо 0 или 1, если 0 означает, что из запаса, если 1 означает означает ввод акций

я хочу вычислить QTE ведьму равно

qte = (sum(qteMv) where typeMv = 1) - (sum(qteMv) where typeMv = 0) 

, как я не могу сделать это в SQL

(select sum(mvQte) from mouvementDeStock 
where (mvType = 1 and mvCode = 'ART_18')) 
- 
(select sum(mvQte) from mouvementDeStock 
where (mvType = 0 and mvCode = 'ART_18') 

, но он не работает на всех

ответ

1

Попробуйте это ...

Select Y.S - X.S As Sum from 
(select sum(qteMv) S from mouventDeStock where typemv=1 and codemv = 'ART_18') Y, 
(select sum(qteMv) S from mouventDeStock where typemv=0 and codemv = 'ART_18') X; 
+0

да, это работает, но я пытаюсь назначить запрос не работает. Я хочу сделать это table.feild = результат запроса; – advseo32

+0

Вы обновляете существующую запись или вставляете ее в новую таблицу? Выполните также определение таблицы. – unlimit

+0

Я хочу обновить только одну запись, моя таблица посвящена продажам продуктов и покупке продуктов, и я separte их с типом mvType mouvment, и я хочу рассчитать общее количество (QtySalesProducts) - total (QtyBuyingProducts) и Update qty в табличных продуктах , я надеюсь, теперь ясно – advseo32

0

Вы можете использовать подзапросы для расчета подытогов, но ваш всех заявления должно быть действительным заявлением SQL , поэтому вам необходимо обернуть вокруг них SELECT:

SELECT (SELECT SUM(mvQte) FROM mouvementDeStock 
     WHERE mvType = 1 AND mvCode = 'ART_18') 
     - 
     (SELECT SUM(mvQte) FROM mouvementDeStock 
     WHERE mvType = 0 AND mvCode = 'ART_18') 

Если вы хотите быть умными, вы можете сделать это с одной суммой, сделав все mvQte значения отсутствующего отрицательно путем умножения их с -1:

SELECT SUM(mvQte * CASE mvType WHEN 0 THEN -1 ELSE 1 END) 
FROM mouvementDeStock 
WHERE mvCode = 'ART_18' 

(CASE expression documentation)

Смежные вопросы