Domanda

Ho 2 tavoli;

  1. item_in (item_id, unità)
  2. item_out (item_id, unità)

Ora dici che voglio sapere quante unità vengono inserisci per ogni articolo, ho solo chiesto

select sum(unit) from item_in order by item_id

Allo stesso modo, se voglio sapere quante unità vengono eliminate, ho solo chiesto

select sum(unit) from item_out order by item_id

Non so come interrogare il saldo (item_in - item_out) per ogni elemento.

È fantastico se riesco a effettuare tutte le query in una procedura memorizzata, perché voglio chiamare la procedura utilizzando Datawindow.

Per favore aiutatemi, grazie.

È stato utile?

Soluzione

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

Altri suggerimenti

Non so nulla di Sybase, ma questa, o una sottile variazione di questo, dovrebbe funzionare.

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 metterà uno 0 ogni volta che un'unità da T2 è nullo, in modo da poter aderire correttamente all'importo dell'unità Item_in da esso.

Nota: funziona in SQL Server. Non so se potresti trovare alcuna differenza sintattica quando lo fai in Sybase :(

Spero che le seguenti operazioni di query:

select 
sum(inn.unit) - sum(outt.unit)
from item_in inn
inner join item_out outt on inn.item_id = outt.item_id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top