0

count(*)ある条件に基づいて製品ごとにグループ化して、変数として選択しようとしています。

その条件が満たされない場合、クエリがその製品のカウント変数値に対して 0 を返すようにします。

私はMySQLデータベースを使用しており、SASで使用しようとしています.これが私のクエリです:

  SELECT COUNT(*) AS common_mtrl, product AS product2 
    FROM join_mkt_sort A, support_mtrl B  
   WHERE support_mtrl_ind >= 1
         AND A.EKEY = B.SKEY 
         AND A.PKEY = B.SKEY
GROUP BY product

条件を満たさない製品の0変数にクエリを割り当てたい。common_mtrl

4

4 に答える 4

2

問題はあなたの参加です。必要なすべての行が「A」テーブルにあると仮定すると、次のように結合できます。

select count(B.SKEY) as common_mtrl, product as product2
from join_mkt_sort A left outer join
     support_mtrl B  
     on A.EKEY = B.SKEY and A.PKEY = B.SKEY and
        support_mtrl_ind >=1 
group by product;

left outer joinは、一致するものがなくても、最初のテーブルのすべての行を保持します。はcount()一致数をカウントします。

于 2013-07-02T11:05:54.003 に答える
0

カウントが0の場合は条件をチェック

 set @count int=0 set @result int select @count=count(*) as
 common_mtrl,product as product2 from join_mkt_sort A,support_mtrl B  
            where support_mtrl_ind >=1 
            and A.EKEY = B.SKEY and A.PKEY = B.SKEY
            group by product if(@count=0) set @result=0
于 2013-07-02T11:11:57.153 に答える
0
select sum(case when support_mtrl_ind >=1 then 1 else 0 end) as common_mtrl,
       product as product2 
from join_mkt_sort A
    ,support_mtrl B  
where A.EKEY = B.SKEY and A.PKEY = B.SKEY
group by product
于 2013-07-02T11:06:40.867 に答える