0

チーム情報を取得したいコール ログ データベースがあります。古いMySQL 4.0.16サーバーで実行されているため、サブクエリ/ビューなしでデータを取得するのに苦労しており、MySQL/PHPにはまだ慣れていないため、正しい方向へのプッシュを探しています.

ソース テーブルの形式は次のとおりです。

callid | team   | status
---------------------------
15432  | team A | open
15433  | team B | open
15434  | team A | onhold
15435  | team A | closed
15436  | team A | closed

チームごとのステータスごとの呼び出し数を出力したいので、次のようになります。

team   | open | onhold | closed
--------------------------------
team A | 1    | 1      | 2
team B | 1    | 0      | 0

これは、select ステートメントで行うことも、一時テーブルと複数のクエリを使用することもできます。これらのいずれかを使用すると、データを使用してチーム全体の情報を表示できるからです。

一時テーブルを作成し、チーム名と保留の数などをゼロで埋めましたが、サブクエリなしでチームごとのステータスごとの呼び出し数を追加する更新ステートメントを作成できませんでした。MySQL 4.0.16 でこれを行う最善の方法は何ですか? ご協力いただきありがとうございます。

4

1 に答える 1

1

ケース式で集計関数を使用して、必要な形式でデータを取得できます。

select team,
  sum(case when status = 'open' then 1 else 0 end) Open,
  sum(case when status = 'onhold' then 1 else 0 end) Onhold,
  sum(case when status = 'closed' then 1 else 0 end) Closed
from yourtable
group by team

デモで SQL Fiddle を参照してください

結果は次のとおりです。

|   TEAM | OPEN | ONHOLD | CLOSED |
-----------------------------------
| team A |    1 |      1 |      2 |
| team B |    1 |      0 |      0 |
于 2013-01-11T21:33:37.583 に答える