SQL:sum(unit)テーブルマイナス和(ユニット)テーブルB

StackOverflow https://stackoverflow.com/questions/9357936

  •  28-10-2019
  •  | 
  •  

質問

2つのテーブルがあります。

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

さて、私はすべてのアイテムに挿入されているユニットの数を知りたいとしましょう、私はただクエリをします

select sum(unit) from item_in order by item_id

同様に、いくつのユニットが取り出されているか知りたい場合は、ただ質問します

select sum(unit) from item_out order by item_id

各アイテムの残高(item_in -item_out)を照会する方法がわかりません。

DataWindowを使用して手順を呼び出したいので、1つのストアドプロシージャですべてのクエリを作成できる場合は素晴らしいことです。

助けてください、ありがとう。

役に立ちましたか?

解決

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

他のヒント

私はSybaseについては何も知りませんが、これ、またはこれの微妙なバリエーションは機能するはずです。

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は、T2のユニットがnullであるときはいつでも0を配置します。そのため、Item_inユニットの量を適切に差し引くことができます。

注:これはSQL Serverで機能します。 Sybaseで実行するときに構文の違いがあるかどうかはわかりません:(

次のクエリが機能することを願っています:

select 
sum(inn.unit) - sum(outt.unit)
from item_in inn
inner join item_out outt on inn.item_id = outt.item_id
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top