2016-12-05 4 views
-3

列Aの各固有値は、各値の表示頻度を無視して表示するようにしています。 BSQL Serverは、1つの列から異なる値を表示し、それぞれの固有のエントリ数をカウントします。

すなわち

Column A  Column B 
1    56 
1    null 
1    78 
2    null 
3    54 

私はあなたがColumnAにGROUP BYの使用をしなければならない

1 2 
3 1 
+2

あなたは、SQL Serverで値をカウントする方法をGoogleに起こりましたか。 – dfundako

+1

aを選択すると、count(b)> 0の順序でtグループからcount(b)をa –

答えて

1

のようなものを見て復帰をしたい、とWHのためにそれらのレコードを選択しますich ColumnBはNULLではありません。次のスクリプトはあなたの要求を達成するために、後にいくつかの説明を追加しました。

CREATE TABLE Test(ColumnA INT, ColumnB INT) 

INSERT INTO Test(ColumnA, ColumnB) VALUES (1, 56), 
              (1, null), 
              (1, 78), 
              (2, null), 
              (3, 54) 

SELECT ColumnA, COUNT(*) 
FROM TEST WHERE ColumnB IS NOT NULL 
GROUP BY ColumnA 

DROP TABLE Test 

対象となるのはSELECT命令です。スクリプトの残りの部分は、あなたが話しているような単純なテーブルの作成と人口のためだけです。

SELECTはColumnAで作成され、その列はGROUP BY句でも使用されます。つまり、他の列を選択して何らかの方法で集計するために、ColumnAから単一の値を抽出する必要があります。

集計関数COUNT()によって、特定の集計、つまりColumnBの値の出現が行われます。これは、グループ化された列と一致するレコードの数を抽出するように指示します。我々のケースでは、COUNT()は、ColumnAの各値のレコード数をカウントします。 しかし、ColumnBのNULL値を持つレコードを除外したいので、単にWHERE句を使用してそれらのレコードを選択から除外します。ご覧のとおり、ColumnB IS NOT NULLのレコードを要求しています。

そのように、あなたが投稿したサンプルデータを使用して、我々はあなたが期待したものを正確に取得されます:

1 2 
3 1 
関連する問題