- - PR -
SQL文について質問したいのですが。
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-09-29 14:26
こちらの会議室には初めて投稿致します。
みーちくと申します。 もし、会議室が違っていた場合は、大変申し訳ございません。 下記のようなテーブルがあった場合、最終的な結果を表示するSQL文が 書けず困っております。 皆様、ご教授願います。 [sinsei_tbl] | product_no | sinsei_id | apply_flg | staff_cd | | a0001000 | 1 | 1 | 0125 | | a0001000 | 2 | 3 | 0125 | | a0001000 | 3 | 1 | 0325 | | a0002000 | 1 | 1 | 0738 | | a0002000 | 2 | 2 | 0981 | *apply_flg 1:新規 2:変更 3:取消 [最終的な結果] | product_no | sinsei_id | apply_flg | staff_cd | | a0001000 | 3 | 1 | 0325 | | a0002000 | 2 | 2 | 0981 | | ||||
|
投稿日時: 2003-09-29 15:05
select * from sinsei_tbl
where ((sinsei_id='3' and apply_flg='1') or (sinsei_id='2' and apply_flg='2')) かな? | ||||
|
投稿日時: 2003-09-29 15:14
Ken-Labさん
返信ありがとうございます。 説明がうまくできなくて、申し訳がございません。 sinsei_idは固定ではなく、 各製造番号のsinsei_idのmax値を表示したいのですが。 宜しく御願いいたします。 | ||||
|
投稿日時: 2003-09-29 15:31
わわっ。これは失礼しました。
これは、少なくともストアドプロシージャか別途プログラム処理が必要ですねー。 ちょっと出直してまいります、ハイ。 ![]() | ||||
|
投稿日時: 2003-09-29 15:52
Oracleだったら、これでいけませんか?
(今、環境がないので試してません。) select A.product_no,A.sinsei_id,A.apply_flg,A.staff_cd from sinsei_tbl A where ( A.product_no , A.sinsei_id ) in ( select b.product_no , max(b.sinsei_id) from sinsei_tbl B group by b.product_no ) | ||||
|
投稿日時: 2003-09-29 15:53
追記です。先程のSQLは、
同一product_no内では、sinsei_id列の値は ユニーク(同一値なしで最大を取ればよい)の前提です。 前提が、使用ケースと異なる場合、自分で工夫してください。 | ||||
|
投稿日時: 2003-09-29 16:12
とりあえず副問合せしてみました。
SELECT product_no, sinsei_id, apply_flag, staff_cd FROM sinsei_tbl, (SELECT product_no, MAX(sinsei_id) FROM sinsei_tbl GROUP BY product_no) AS max_tbl) WHERE sinsei_tbl.product_no=max_tbl.product_no AND sinsei_tbl.sinsei_id=max_tbl.sinsei_id; もっと良い方法があるとは思いますが… ![]() みなさまフォローお願いします。。 | ||||
|
投稿日時: 2003-09-29 16:18
こんにちは。
副問合せ その2です。 ただし、DBは SQL Server 2000 です。(検証済み) OracleでもINNER JOIN句はサポートされているはずなので、 動作するかもしれません。
|
1|2|3
次のページへ»