なんども、恐縮です。
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.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]がほしいのです。
宜しくお願い致します。
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
でできるのでは?
環境がないので試していません
この回答への補足
ご回答をありがとうございます。
結果は、やはり3行でした。(;_;)
それと、他のテーブルとの絡みがありますので
JOIN を使用したいのです。
宜しくお願い致します。
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.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]を
いれて良いのかが解りません。情けない限りです。
改めて、質問をさせてください。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- 英語 英文の経済記事ですが、 4 2022/07/23 18:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
truncate tableを使って複数の...
-
エラーを起こす方法
-
既にテーブルが存在する場合の...
-
SELECT実行結果のレスポンス改...
-
データ削除とSQL*Loaderでのイ...
-
pandasでsqlite3にテーブル作成...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
Excelでしりとりを作る方法
-
Accessで最新のレコード...
-
オシロスコープYOKOGAWA DL708...
-
Activation codeとは
-
次の時間帯の勝率の合計を求め...
-
Accessの構成をコピーしたい
-
sqlに記述できない文字
-
PostgreSQLのtimestamp型で時間...
-
SQLのテーブルにないデータの出力
-
1つのドメインを複数のDNSで管...
-
認知心理学で言うスクリプトとは?
-
フラグをたてるってどういうこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
既にテーブルが存在する場合の...
-
データ削除とSQL*Loaderでのイ...
-
複数レコードの複数フィールド...
-
テーブル定義書(Oracle) 【IX】...
-
Where句のNot条件をAnd条件にし...
-
テーブルに変更があったらCSV出力
-
CASEでBETWEEN制約
-
AccessからOracle DB(View)を...
-
[materialized]マテリアライズ...
-
Oracleのリンクテーブルの「精...
-
テーブルDROPできないのです。。。
-
ora-01722のエラーについて
-
pro*cobol ⇔ oracle のデータ型...
-
accessのデータをoracleへinser...
-
フィールド数が異なるテーブル...
-
viewの性能
-
AccessVBAにて動的にテーブルを...
おすすめ情報