2012-02-16 27 views
1

私はかなりMySQLとMSSQLに堪能ですが、私はちょうどポストグルを始めています。 open_dateため適切なGROUP BYの構文

SQL error: 

ERROR: column "incidents.open_date" must appear in the GROUP BY clause or be used in an aggregate function 

In statement: 
SELECT date(open_date), COUNT(*) 
FROM incidents 
GROUP BY 1 
ORDER BY open_date 

タイプがtimestamp with time zoneある、と私はGROUP BY date(open_date)を使用する場合、私は同じ結果を得る:私はそう簡単であるためには、これは単純な問題であると確信しています。

私は、postgresのドキュメントといくつかの例をオンラインにしようとしましたが、すべてがこれが有効であることを示しているようです。

答えて

5

問題は、句の中の白抜きのopen_dateです。

これはそれを行う必要があります。

SELECT date(open_date), COUNT(*) 
    FROM incidents 
GROUP BY date(open_date) 
ORDER BY date(open_date); 

また、これは働くだろう(私はメンテナンスのために列を参照するために整数を使用しないが):

SELECT date(open_date), COUNT(*) 
    FROM incidents 
GROUP BY 1 
ORDER BY 1; 
+0

はい、私はこれを知らなかったとは信じられません。 > _ < – Sammitch

+1

ねえ、心配する必要はありません。それは私たちすべてに起こります。私たちは、より大きく、より良いバグに対処するために拾い上げて行きます:D – bernie

1

「open_dateは」ではありませんあなたの選択リストは、 "date(open_date)"です。あなたはまた、select文であなたの列に名前を付けることができ

順日付(open_date)によって

ため

1によって、その後を参照してください。これらの

のいずれかが動作しますそのエイリアス:

エイリアス別名

一部のデータベースでは、選択したエイリアスの前にキーワードASが必要です。