2016-09-22 10 views
0

私は、様々なlikeのcriteriasに基づいて行を選択しようとしています、そして次の関数書かれている:「⋮」を省略ラインを表しアクセス: '。「*」で選択したフィールドにはできないグループの

SELECT *, 
COUNT(YRKE) AS Antall_med_yrket 
FROM [T8 kopi (til sletting) av T7 3] 
WHERE YRKE like "*læge*" 
    OR YRKE like "*præst*" 
    OR YRKE like "*Lærer*" 
    OR YRKE like "*lærer*" 
    OR YRKE like "*chef.*" 
    OR YRKE like "*mester*" 
    OR YRKE like "*Portner*" 
    OR YRKE like "*portner*" 
    ⋮ 
    OR YRKE like "*fuglefanger*" 
    ⋮ 
    OR YRKE like "*Glasanfanger*" 
GROUP BY YRKE 
; 

を。私がしたいことは、表示された単語が出現するすべての行を表示し、これらの単語のヒット数を表示することです。出力例:私はCOUNT行を追加するとき、タイトルに示したよう

ID NAVN   YRKE      Antall_med_yrket 
1 Ole Olsen  Fuglefanger    3 
2 Per Olsen  Skogbruger (Fuglefanger) 3 
3 Olav Krogh  Fængselslæge    1 
4 Kristen Persen Gaardbruger (Fuglefanger) 3 
5 Per Kristensen Fængselsdirecteur   1 

しかし、私は、エラーメッセージが表示されます。行を削除すると、必要に応じてすべての行が出力されますが、もちろんカウントはありません。私は間違って何をしていますか?

私は、Oracle上のMS Access 2007を使用しています。

+0

やあ、MS Accessのは、物事を処理しますが、Oracleでは%がLIKE文 – davegreen100

答えて

3

これは正しいです。次べき仕事:明示的GROUP BYで言及

  • :SQL集計クエリで

    SELECT YRKE, COUNT(YRKE) AS Antall_med_yrket 
    FROM [T8 kopi (til sletting) av T7 3] 
    WHERE YRKE like "*læge*" 
        OR YRKE like "*præst*" 
        OR YRKE like "*Lærer*" 
        OR YRKE like "*lærer*" 
        OR YRKE like "*chef.*" 
        OR YRKE like "*mester*" 
        OR YRKE like "*Portner*" 
        OR YRKE like "*portner*" 
        ⋮ 
        OR YRKE like "*fuglefanger*" 
        ⋮ 
        OR YRKE like "*Glasanfanger*" 
    GROUP BY YRKE; 
    

    SELECTの列は、一般的に以下のいずれかにする必要があります。

  • 明示的GROUP BYに言及した列によって形成された表現。
  • 例えばSUM()又はMIN()として集約関数への引数。

注:一部のデータベース(基本的に、あなたはGROUP BY idを言うとidが一意であるとき、他の列を使用することができます)で許可されて一つの例外があります。しかし、MS AccessもOracleもその機能をサポートしていません。

+0

で使用するワイルドカードがあるかわからないので、私のクエリが失敗した理由、私は特に私の選択線の列をリストしていなかったということでしたか? –

+0

@CannedMan。 。 。理由はあなたが '*'を含んでいたからです。 –

関連する問題