2

値のリストを含むテーブルがあります。-1 は空白の値です。

 ID    FieldType1A FieldType1B FieldType2A FieldType2B Person
  1             15          14          10          -1      1
  2             16          -1          12          10      1
  3             17          -1           5           6      1
  4              6          -1           7          -1      2
 ...

したがって、結果は次のようになります。

 Person      FieldType1     FieldType2
      1               4              5
      2               1              1

ユーザーIDのリストを持つユーザーテーブルがあります。その値のリストを繰り返し処理して、結果セットに個人リストを生成する方法はありますか(単にカウントであるため、フィールドタイプが完全に有効な場合は0)? T-SQL Column Values Countへの答えは、私が行こうとしている方向への一歩だと思いますが、同じ列を結合する方法がわかりません (A/B は答えのリストを許可します)。それと、有効な各応答の数を数えようとしないので、すべての有効な値を組み合わせることに興味があります。

4

2 に答える 2

4

式を使用して、CASE負でない 1 の値をすべて 1 に変更し、-1 の値を 0 に変更してから合計することができます。

SELECT Person, 
    SUM(CASE WHEN FieldType1A <> -1 THEN 1 ELSE 0 END) + 
        SUM(CASE WHEN FieldType1B <> -1 THEN 1 ELSE 0 END) AS FieldType1,
    SUM(CASE WHEN FieldType2A <> -1 THEN 1 ELSE 0 END) + 
        SUM(CASE WHEN FieldType2B <> -1 THEN 1 ELSE 0 END) AS FieldType2
FROM YourTable
GROUP BY Person
于 2012-08-28T14:32:53.763 に答える
2
SELECT Person, 
count(nullif(FieldType1A, -1)) + count(nullif(FieldType1B, -1)) as FieldType1, 
count(nullif(FieldType2A, -1)) + count(nullif(FieldType2B, -1)) as FieldType2
FROM yourtable
GROUP BY person
于 2012-08-28T14:37:56.243 に答える