Question

J'ai 2 tables;

  1. item_in (item_id unité)
  2. item_out (item_id unité)

Maintenant, nous allons dire que je veux savoir combien unité est insertion pour chaque élément, je viens de requête

select sum(unit) from item_in order by item_id

De même, si je veux savoir combien l'unité est prise, je demande simplement

select sum(unit) from item_out order by item_id

Je ne sais pas comment interroger l'équilibre (item_in - item_out). Pour chaque élément

Il est grand si je peux faire toute la requête dans une procédure stockée, parce que je veux appeler la procédure en utilisant DataWindow.

S'il vous plaît aider, merci.

Était-ce utile?

La solution

SELECT
  item_id,
  SUM(unit) AS unit_balance
FROM (
  SELECT item_id, unit FROM item_in
  UNION ALL
  SELECT item_id, -unit FROM item_out
) AS s (item_id, unit)
GROUP BY item_id

Autres conseils

Je ne sais rien sybase, mais cela, ou une variation subtile de ce fait, devrait fonctionner.

select t1.item_id, sum(t1.unit - coalesce(t2.unit, 0)) as Balance
from item_in t1
left join item_out t2
on t1.item_id = t2.item_id
group by t1.item_id

COALESCE mettre un 0 à chaque fois qu'une unité de t2 est NULL, de sorte que vous pouvez correctement le montant de soustrayez unité item_in de celui-ci.

Note: Cela fonctionne dans SQL Server. Je ne sais pas si vous pouvez trouver une différence syntaxique quand il en cours d'exécution dans sybase: (

J'espère que les travaux de requête suivants:

select 
sum(inn.unit) - sum(outt.unit)
from item_in inn
inner join item_out outt on inn.item_id = outt.item_id
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top