- - PR -
グループ化の仕方がわかりません
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-01 18:12
でっちさん、返答ありがとうございます。
でっちさんが指摘されたような場合もありますね…ウムム
この場合必要なのは1件です。DOC_NOは必ずユニークに取得したいのです。 SELECT DOC_NO, MAX(SAY_YMD) AS YMD FROM AAA WHERE CD='1' AND ID='999999' KNS_CODE IN ('AAAAA','BBBBB') GROUP BY DOC_NO, YMD ORDER BY YMD DESC と書いています。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-11-01 18:19
SELECT DOC_NO, MAX(SAY_YMD) AS YMD
FROM AAA WHERE CD='1' AND ID='999999' KNS_CODE IN ('AAAAA','BBBBB') GROUP BY DOC_NO , YMD ORDER BY YMD DESC 太字のとこ、いらないんでは? | ||||||||||||
|
投稿日時: 2005-11-01 18:26
でっちです。
KNS_CODEの条件文の前にANDをつけて、GROUP BYのYMDを削除すればSQL*Plusでは動くと思います。
で、Access経由だと、Order Byで別名YMDを解決してくれないみたいですね。 そっちは、MAXをそのまま記述すればOKのようです。
蛇足かもしえませんが、最初のSQLではYMDは取得対象ではなかったようですね。 ソートにだけ必要なのであれば、ORDER BYにだけ書いてもOKですよ。
| ||||||||||||
|
投稿日時: 2005-11-01 18:40
でっちさん!ぼのぼのさん!ありがとうございました。
>SELECT DOC_NO, MAX(SAY_YMD) AS YMD >FROM AAA >WHERE CD='1' AND ID='999999' KNS_CODE IN ('AAAAA','BBBBB') >GROUP BY DOC_NO , YMD >ORDER BY YMD DESC >太字のとこ、いらないんでは? 「,YMD」省いたらできました!! 説明が悪くお手間をとらせました。 GROUP BYはSQLの基本ですよね。 勉強します。 みなさま、本当にありがとうございました。 | ||||||||||||
|
投稿日時: 2005-11-02 10:34
解決されたようでよかったです(^^)
蛇足ですが「DISTINCT」は全件検索をまず実行し、問い合わせ結果を昇順に並び替えてから、重複データを除きつつ結果を返すので、自動的に昇順に並び替えられます。 またSQLは少しずつやっていった方が、どこまでができて、どこでエラーが出ているのかわかりやすくなって、やり易いですよ♪o(^-^)o (まずはGROUPBYのみで実行、その後ORDERBYをつける、といった感じで私はやってます) _________________ たまき@天 凶暴な兎ほど可愛い!? |