sql >> データベース >  >> RDS >> Sqlserver

集計関数またはGROUPBY句のいずれにも含まれていないため、選択リストの列が無効です

    つまり、このエラーは、SQLServerがどのを認識していないことを示しています。 B グループから選択します。

    特定の値を1つ選択するか(例:MINSUM 、またはAVG )この場合、適切な集計関数を使用するか、すべての値を新しい行として選択します(つまり、Bを含みます)。 GROUP BY内 フィールドリスト)。

    次のデータを検討してください:

    ID  A   B
    1   1  13
    1   1  79
    1   2  13
    1   2  13
    1   2  42
    

    クエリ

    SELECT A, COUNT(B) AS T1 
    FROM T2 
    GROUP BY A
    

    返されます:

    A  T1
    1  2
    2  3
    

    これはすべてうまくいっています。

    ただし、次の(不正な)クエリを検討してください。これにより、このエラーが発生します。

    SELECT A, COUNT(B) AS T1, B 
    FROM T2 
    GROUP BY A
    

    そして、問題を説明する返されるデータセット:

    A  T1  B
    1  2   13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...?
    2  3   13? 42? ...?
    

    ただし、次の2つのクエリはこれを明確にし、エラーを引き起こしません。

    1. アグリゲートの使用

      SELECT A, COUNT(B) AS T1, SUM(B) AS B
      FROM T2
      GROUP BY A
      

      返されます:

      A  T1  B
      1  2   92
      2  3   68
      
    2. GROUP BYに列を追加する リスト

      SELECT A, COUNT(B) AS T1, B
      FROM T2
      GROUP BY A, B
      

      返されます:

      A  T1  B
      1  1   13
      1  1   79
      2  2   13
      2  1   42
      


    1. 別のプロセスが古いデータを取得しないようにSELECTをロックします

    2. 原因:android.database.sqlite.SQLiteException:そのようなテーブルはありません:(コード1)Android

    3. PostgreSQLの「エラー:各UNIONクエリには同じ数の列が必要」を修正

    4. 多くのテーブルの1つへの外部キー?