前提・実現したいこと
製品の入出庫を管理するstock_historyテーブルがあります。
sql
1CREATE TABLE "stock_history" ( 2 "id" INTEGER, 3 "date" TEXT, 4 "product_id" TEXT, 5 "type" TEXT, 6 "count" TEXT, 7 PRIMARY KEY("id") 8)
dateは入出庫した日付
product_idは入出庫した製品のID
typeは入庫か出庫かを表す数字("0"=入庫、"1"=出庫)
countは入出庫した製品の数です。
このテーブルに
id | date | product_id | type | count |
---|---|---|---|---|
1 | 2020-09-25 | 1001 | 0 | 50 |
2 | 2020-09-25 | 1001 | 1 | 40 |
3 | 2020-09-26 | 1001 | 0 | 30 |
4 | 2020-09-26 | 1001 | 1 | 20 |
のようにレコードがあったとして、
これをdateとproduct_idでグルーピングし、
そのグループ単位での入庫と出庫別のcountの合計を新たに列に加え、
date | product_id | in_count | out_count |
---|---|---|---|
2020-09-25 | 1001 | 50 | 40 |
2020-09-26 | 1001 | 30 | 20 |
のように取得するにはどのようなSQLを書けばよいでしょうか?
ご教授いただけると幸いです
発生している問題・エラーメッセージ
「該当のソースコード」で示したSQLを実行すると
date | product_id | in_count | out_count |
---|---|---|---|
2020-09-25 | 1001 | 0 | 40 |
2020-09-26 | 1001 | 0 | 20 |
が返され、in_countのみ合計が算出されません。
該当のソースコード
SQL
1SELECT date,product_id,in_count,out_count 2FROM( 3SELECT date,product_id,SUM(count)AS in_count,0 AS out_count FROM stock_history WHERE type = 0 GROUP BY date,product_id 4UNION 5SELECT date,product_id,0 AS in_count,SUM(count)AS out_count FROM stock_history WHERE type = 1 GROUP BY date,product_id 6) 7GROUP BY date,product_id 8
補足情報(FW/ツールのバージョンなど)
SQLite3
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 23:53