アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
という結果です。
宜しくお願いいたします。

A 回答 (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;
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
Oracleの場合、select句で選択していない列でもorder byに指定する事が可能なのですが、PostgreSQLは違うのでしょうか?
PostgreSQLはほとんど触った事が無いので。。
試しにエイリアスをつけてみましたがやはりダメでした。

ちなみにto_char(DDATE,'YYYYMM')でgroup by しても値は返ってきませんでした。
何か良い方法は無いでしょうか。

お礼日時:2003/10/05 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!