• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracle[10g]のSQL文について(新No.2))

Oracle[10g]のSQL文について

このQ&Aのポイント
  • Oracle[10g]のSQL文についての質問です。結果が[NO/LINE/CODE/BIKO] X 1 A-1 A X 2 A-3 (null)と、なる様にしたいのです。要するに、BIKOは、一番最初の物を取得したいのです。
  • SELECT C1.NO, C1.LINE, C2.BIKO FROM C1 LEFT JOIN C2 ON (C1.NO = C2.NO) AND (C1.LINE = C2.LINE) WHERE C1.NO='X' ORDER BY C1.LINEと、考えたのですが、結果がX 1 A-1 A X 1 A-1 B X 2 (NULL)と、出てしまいます。
  • どうすれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.4

#3 です。 回答補足に骨組みを提示していただけたので、それを書き換えてみました。 コーディング慣れしている方だと、もう少しスマートなSQLがかけるかもしません。その辺はご容赦願います。 SELECT NO, LINE, CODE, BIKO FROM ( SELECT C1.NO, C1.LINE, C1.CODE, C2.BIKO, ROW_NUMBER() OVER( PARTITION BY C1.NO, C1.LINE ORDER BY C1.NO, C1.LINE, C2.LINE2) R_NUM FROM C1 LEFT JOIN C2 ON (C1.NO = C2.NO) AND (C1.LINE = C2.LINE) WHERE C1.NO='X' ) WHERE R_NUM <= 1 ORDER BY NO, LINE

m-toshi
質問者

お礼

ありがとうございます。ようやく動きました。 が、実際は、もっと複雑なので、どこに[ROW_NUMBER]を いれて良いのかが解りません。情けない限りです。 改めて、質問をさせてください。 宜しくお願い致します。

その他の回答 (3)

  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.3

ROW_NUMBER で過去ログを検索してください。 参考になるものが多数でてくると思います。 ピタリ正解ではないですが、あとはご自分で解決できると思います。 参考URLは一例

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1274959
m-toshi
質問者

補足

ご回答をありがとうございます。 早速、調べて、 SELECT C1.NO, C1.LINE, C2.BIKO FROM C1 LEFT JOIN C2 ON (C1.NO = C2.NO) AND (C1.LINE = C2.LINE), ( SELECT C2.*,ROW_NUMBER() OVER(PARTITION BY NO , LINE ORDER BY NO,LINE,LINE2) R FROM C2 ) C1x WHERE C1.NO='X' AND C1x.R=1 ORDER BY C1.LINE と、作成したのですが、結果は同じなのです。(;_;) 何故でしょう? (自分で解決できない事がなさけないです)

  • raphel_7
  • ベストアンサー率34% (86/252)
回答No.2

SELECT C1.NO, C1.LINE, C2.BIKO FROM C1,C2 WHERE C1.NO='X' AND C1.NO = C2.NO(+) AND C1.LINE = C2.LINE(+) ORDER BY C1.LINE でできるのでは? 環境がないので試していません

m-toshi
質問者

補足

ご回答をありがとうございます。 結果は、やはり3行でした。(;_;) それと、他のテーブルとの絡みがありますので JOIN を使用したいのです。 宜しくお願い致します。

  • fu_u_ka_i
  • ベストアンサー率51% (15/29)
回答No.1

>要するに、BIKOは、一番最初の物を取得したいのです。 > >SELECT C1.NO, C1.LINE, C2.BIKO >FROM C1 >LEFT JOIN C2 ON (C1.NO = C2.NO) AND (C1.LINE = C2.LINE) >WHERE C1.NO='X' >ORDER BY C1.LINE > >と、考えたのですが、 あなたの考えたSQLで、”一番最初の”という条件は、どこに盛り込まれていますか? (どのような基準で数えた最初の1件なのか判りませんが・・)

m-toshi
質問者

補足

説明不足で申し訳ございません。 [C2]テーブルに [NO](KEY) [LINE](KEY) [LINE2](KEY) [BIKO] のフィールドがあります。 X 1 1 A X 1 2 B この[LINE]の最小値の[BIKO]がほしいのです。 宜しくお願い致します。

関連するQ&A