
なんども、恐縮です。
Oracle[10g]のSQL文についての質問です。(No.???)
[C1]テーブルに
[NO](KEY) [LINE](KEY) [CODE] のフィールドがあります。
X 1 A-1
X 2 A-3
Y 1 A-2
[C2]テーブルに
[NO](KEY) [LINE](KEY) [LINE2](KEY) [BIKO] のフィールドがあります。
X 1 1 A
X 1 2 B
結果が
[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)
と、出てしまいます。
どうすれば良いのでしょうか ?
宜しくお願い致します。
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
ありがとうございます。ようやく動きました。
が、実際は、もっと複雑なので、どこに[ROW_NUMBER]を
いれて良いのかが解りません。情けない限りです。
改めて、質問をさせてください。
宜しくお願い致します。
No.3
- 回答日時:
ROW_NUMBER で過去ログを検索してください。
参考になるものが多数でてくると思います。
ピタリ正解ではないですが、あとはご自分で解決できると思います。
参考URLは一例
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1274959
この回答への補足
ご回答をありがとうございます。
早速、調べて、
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
と、作成したのですが、結果は同じなのです。(;_;)
何故でしょう? (自分で解決できない事がなさけないです)
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件なのか判りませんが・・)
この回答への補足
説明不足で申し訳ございません。
[C2]テーブルに
[NO](KEY) [LINE](KEY) [LINE2](KEY) [BIKO] のフィールドがあります。
X 1 1 A
X 1 2 B
この[LINE]の最小値の[BIKO]がほしいのです。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
truncate tableを使って複数の...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
データ削除とSQL*Loaderでのイ...
-
Where句のNot条件をAnd条件にし...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
PostgreSQLのtimestamp型で時間...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
pandasでsqlite3にテーブル作成...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
UPDATEで既存のレコードに文字...
-
dumpでインデックスだけ抜きたい
-
MySQLで数字の値のもののみを取...
-
T-SQLで任意の箇所で強制終了す...
-
Access にて "mm:ss.0" 形式の ...
-
PLPGSQLでの複数行複数列
-
副問合せを使わずにUNIONと同様...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーを起こす方法
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
既にテーブルが存在する場合の...
-
データ削除とSQL*Loaderでのイ...
-
accessのデータをoracleへinser...
-
テーブル定義書(Oracle) 【IX】...
-
複数レコードの複数フィールド...
-
AccessからOracle DB(View)を...
-
CASEでBETWEEN制約
-
任意のテーブルをdrop tableしたい
-
Oracle[10g]のSQL文について。(...
-
テーブルに変更があったらCSV出力
-
Oracleによるリンクテーブルで...
-
Where句のNot条件をAnd条件にし...
-
oracle ora-02298
-
ora-01722のエラーについて
-
複数テーブルにある個別フィー...
-
Oracle[10g]のSQL文について(新...
-
テーブルDROPできないのです。。。
おすすめ情報