- - PR -
SQL : Groupしたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-07-23 14:28
[Table名:TEST]
PROJECT_ID OPE_RESULT OPE_RANK OPE_NUMBER ITEM_ROW ITEM_COL ----------------------------------------------------------------------- 01 C 1 01 01 01 NG B 2 01 01 01 OK 3 01 01 01 C 3 03 02 KEY項目:PROJECT_ID,OPE_NUMBER,ITEM_ROW,ITEM_COL 条件 @PROJECT_IDが同じ AITEM_ROW項目とITEM_COL項目が同じならば、1つにまとめ(OPE_NUMBERのMAXでまとめる)表示する 結果一覧 PROJECT_ID OPE_RESULT OPE_RANK OPE_NUMBER ITEM_ROW ITEM_COL ----------------------------------------------------------------------- 01 OK 3 01 01 01 C 3 03 02 となっていたいのです。 がっ。 SELECT PROJECT_ID, OPE_RESULT, OPE_RANK, MAX(OPE_NUMBER) AS OPE_NUMBER, ITEM_ROW, ITEM_COL FROM TMD102 WHERE (PROJECT_ID = '01') GROUP BY PROJECT_ID, OPE_RESULT, OPE_RANK, ITEM_ROW, ITEM_COL ORDER BY ITEM_ROW, ITEM_COL と書いてもGROUPになってくれるわけでもなく・・・ 普通に最初に書いたデータ通りに出てきてしまいます。 なにがおかしいのでしょうか? どうか教えてください!! よろしくお願いいたします。 | ||||
|
投稿日時: 2003-07-23 15:35
> GROUP BY PROJECT_ID, OPE_RESULT, OPE_RANK, ITEM_ROW, ITEM_COL
ITEM_ROWとITEM_COLでまとめたいならば、 GROUP BY ITEM_ROW, ITEM_COL (や、副問合せとDISTINCT) になります。 他の列が必要ならば、副問合せにして、PRIMARY KEYで連結して...と、それなりに手間がかかります。 ・PRIMARY KEYの列名は? ・データベース製品とバージョンは何でしょうか? | ||||
|
投稿日時: 2003-07-23 15:46
この手の質問はこちらのサイトがいいかと思います。
RDB研究館 http://www.mars.dti.ne.jp/~o-shin/ | ||||
|
投稿日時: 2003-07-23 15:49
皆様お返事ありがとうございます。
なな様 ・PRIMARY KEYの列名は PROJECT_IDとITEM_ROWとITEM_COLとOPE_NUMBER です ・DBは SQLserver2000 です よろしくお願いいたします | ||||
|
投稿日時: 2003-07-23 18:09
こんな感じでしょうか?
SELECT BASE.PROJECT_ID PROJECT_ID, ADD.OPE_RESULT OPE_RESULT, ADD.OPE_RANK OPE_RANK, BASE.ITEM_ROW ITEM_ROW, BASE.ITEM_COL ITEM_COL, BASE.OPE_NUMBER OPE_NUMBER FROM ( SELECT PROJECT_ID, ITEM_ROW, ITEM_COL, MAX(OPE_NUMBER) AS OPE_NUMBER, FROM TMD102 GROUP BY PROJECT_ID, ITEM_ROW, ITEM_COL ) BASE, TMD102 ADD WHERE BASE.PROJECT_ID = ADD.PROJECT_ID AND BASE.ITEM_ROW = ADD.ITEM_ROW AND BASE.ITEM_COL = ADD.ITEM_COL AND BASE.OPE_NUMBER = ADD.OPE_NUMBER ORDER BY ITEM_ROW, ITEM_COL # たしかに、この会議室は不適切かも? # SQL Server使ったこと無いので...もっと便利機能があるかも? | ||||
|
投稿日時: 2003-07-23 20:05
こんばんは。
ななさんと同様のクエリーになりました。 ななさんが示されたクエリーには、ADDなどSQLServer2000の予約語が入っていて、そのままでは動かないので、私もクエリーを例示します。
集合間の結合になりますので、INNER JOIN 句を使用しました。 INNER JOINは、ななさんが書かれたWHERE句での結合と同義です。 > # たしかに、この会議室は不適切かも? @ITでは、データベースってどこに属するのか微妙ですね。 時々、ネットワークのところに記事が上がりますが、ちょっと違和感があります。 |
1