2017-10-13 10 views
0
I have a result set such as: 

    Code  No 
    1   * 
    1   - 
    1   4 
    1   
    1 

ここでは基本的には2つの列を持つクエリが必要です。合計の数と数がないクエリが必要です。GROUP BY COUNT条件で

ここでは、グループとカウントを必要とすると仮定しますが、このようなクエリで2つの異なるカウントを行うにはどうすればよいですか?

これは私がこれまで持っていたものですが、私はそれの残りの部分

SELECT CODE,NO 
Sum(Case when No IN ('*', '-', '') then 1 else 0 end) as Count 

答えて

7

で立ち往生ビット午前私はあなたが基本的にはGROUP BYが必要だと思う:

SELECT CODE, 
     SUM(Case when No IN ('*', '-', '') then 1 else 0 end) as Count, 
     COUNT(*) as total 
FROM t 
GROUP BY CODE; 
0

まあ、これは取りました瞬間:-)、しかしここでそれは...私はNo_Number列を作成して設定するためにCASE文を使用しました。元のテーブル値が数値であればデータベースは1の値を元のテーブルの行に渡し、NULLであればそれをCOUNTから破棄します。そして、結果セットは、テーブルまたは一時テーブルにある場合、それは、カウントそれだけで、もともと数字だった値を認識し、他のすべてを無視します。..

をするとき:

SELECT Code, 
     COUNT(CASE WHEN [No] NOT LIKE '[0-9]' THEN 1 ELSE NULL END) AS No_Number, 
     COUNT(Code) AS Total 
FROM <tablename> 
GROUP BY Code 

結果セットがある場合前のクエリの積で、必要な結果を得るためにCTE(Common Table Expression)を使用することができます。または、前のクエリにこのコードの一部を含めることができます。

関連する問題