• 締切済み

年月でdistinctしたい(PostgreSQL)

PostgreSQLでdistinctの使い方についての質問です。 t_mainのDDATEカラム(DATE)に DDATE ============================ 20030929 20030930 20031001 20031002 ・ ・ ・ というデータが入っています。 このデータのうち、年月でdistinctした データが欲しいので、以下のようにSQLを組みました。 =========================================== select distinct substring(DDATE from 1 for 6) from t_main order by DDATE これでは値が取得できなかったので、次に =========================================== select distinct TO_CHAR(DDATE,'YYYYMM') from t_main order by DDATE としましたが、これも値が返ってきません。 上手に年月でdistinctできる方法を教えてください。 欲しいのは ======== 200309 200310 という結果です。 宜しくお願いいたします。

みんなの回答

回答No.1

substring(DDATE from 1 for 6)は日付表示形式に依存するのでおいといて…。 order byでDDATE順にせよと指定されているけれどもselect項目にDDATEがありません。あるのはDDATEをto_charで加工した結果の文字列項目です。なので、その文字列項目をorder byに指定します。 select distinct to_char(DDATE,'YYYYMM') as ym from t_main order by ym;

sunnys
質問者

お礼

アドバイスありがとうございます。 Oracleの場合、select句で選択していない列でもorder byに指定する事が可能なのですが、PostgreSQLは違うのでしょうか? PostgreSQLはほとんど触った事が無いので。。 試しにエイリアスをつけてみましたがやはりダメでした。 ちなみにto_char(DDATE,'YYYYMM')でgroup by しても値は返ってきませんでした。 何か良い方法は無いでしょうか。

すると、全ての回答が全文表示されます。

専門家に質問してみよう