0

この質問が以前に行われた場合は申し訳ありませんが、私のデータベース テーブルは次のように構成されています。

AgentName | Sold1 | SoldDate1 | Sold2 | SoldDate2 | Sold3 | SoldDate3
Geoff     | True  | 20/06/2012 | False | Null     | True  | 20/04/2012
Alex      | True  | 13/02/2012 | True  | 26/06/2012 | False | Null

基本的に私がやろうとしているのは、先月の Sold1 での Geoff の販売数をカウントすることですが、まず、sold1 が true かどうかを確認し、次に Sold2 と Sold3 についても同じことを確認する必要があります。

私の目的は、返されたデータ表示を AgentName でグループ化し、次のように表示することです。

AgentName     TotalSold1       TotalSold2      TotalSold3

一日中解決策を見つけようとしてきたので、誰かが助けてくれることを願っています:(

4

1 に答える 1

1

table_name はテーブルの名前です

select t0.AgentName, CountSold1, CountSold2, CountSold3 from (
  select distinct AgentName from table_name
) t0 left join (
  select AgentName, count(*) CountSold1 from table_name
  where Sold1 = 'True' and SoldDate1 between '01-JUN-2012' and '30-JUN-2012'
  group by AgentName
) t1 on t0.AgentName = t1.AgentName left join (
  select AgentName, count(*) CountSold2 from table_name
  where Sold2 = 'True' and SoldDate2 between '01-JUN-2012' and '30-JUN-2012'
  group by AgentName
) t2 on t1.AgentName = t2.AgentName left join (
  select AgentName, count(*) CountSold3 from table_name
  where Sold3 = 'True' and SoldDate3 between '01-JUN-2012' and '30-JUN-2012'
  group by AgentName
) t3 on t2.AgentName = t3.AgentName
于 2012-07-03T16:07:41.230 に答える