1

トランザクションログとして機能するテーブルがあります。

Date  Action  Qty
11-23  ADD     1
11-23  REMOVE  2
11-23  ADD     3

特定の日付について、すべてのADDとすべてのREMOVEを個別に集計するクエリが必要です。

これらのselectステートメントはそれぞれ正常に機能しますが、結合することはできません。

select date, sum(qty) as Added from table where action='Add' and date='11-23'

natural join

select date, sum(qty) as Removed from table where action='Remove' and date='11-23'

各selectステートメントの結果をテーブルに保存してからそれらを結合できますか?これをすべて一緒に回避する方法はありますか?

ありがとう-ジョナサン

4

2 に答える 2

4

複数のクエリの結果セットを1つに本当に追加したい場合は、UNION構文を見てください。

http://dev.mysql.com/doc/refman/5.0/en/union.html


ただし、この場合は、GROUPBYを確認してください

したがって、グループ化するDate, Actionと、アクションごとに1日あたり1つのレコードが得られSUM()、数量を指定できます。

例えば:

select 
  date,
  action, 
  sum(qty) AS Quantity 
from 
  table 
group by
  date, action

結果は次のようになります。

11-23 | ADD    | 10
11-23 | REMOVE |  5
11-24 | ADD    |  4
11-24 | REMOVE |  3
于 2009-11-29T05:58:18.260 に答える
2

実際に必要な出力を表示すると役立ちます。あなたの「追加された」と「削除された」から、私はあなたが組合を望んでいないと推測していますが、多分このようなものです:

select
    date,
    sum(if(action='ADD',qty,0)) as Added,
    sum(if(action='REMOVE',qty,0)) as Removed
from `table`
where date='11-23';

group by date複数の日付を選択する場合は。)

于 2009-11-29T06:09:20.073 に答える