
SQLでデータを1件だけ取得したいのですが。
以下のようなテーブルが2つあるとします。
------------------------------------
テーブルA テーブルB
値X 値X 値Y
1 1 20
2 2 NULL
3 2 60
4 2 70
4 NULL
4 NULL
------------------------------------
ここで、テーブルAの値Xと、テーブルBの値Xをリンクさせます。
テーブルAにデータがあれば、テーブルBに無くても出力します(外部結合イメージ)
テーブルAの値Xに対して、テーブルBの値Xは2件以上リンクされる可能性があります。
この場合は1件のみ出力します。
その1件の決め方は、テーブルBの値YがNULLでは無く最大の物です。
但し値Yは全てNULLの可能性もあるので、その場合NULLとして1件出力します。
上記の出力イメージ
------------------------------------
値X 値Y
1 20 (1件の場合そのまま出力。1件がNULLでもそのまま出力)
2 70 (NULLではない最大の1件を出力)
3 NULL (テーブルBになくても出力)
4 NULL (値が全てNULLの場合、NULLとして1件出力)
------------------------------------
どのようなSQLを記載すれば実現可能でしょうか?
No.1ベストアンサー
- 回答日時:
select テーブルA.x
,( select b.y from ( select テーブルB.x, テーブルB.y, row_number() over( partition by テーブルB.x order by テーブルB.y desc nulls last ) rn from テーブルB ) b
where テーブルA.x = b.x and b.rn = 1 ) y
from テーブルA;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
sqlplusで表示が変なので、出力...
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
SQL*LoaderでCSVから指定した列...
-
テーブル名をカラムとして取得...
-
update文で改行を入れる
-
DBからタブ区切りのCSVデータを...
-
OracleのSQLで同テーブルのカラ...
-
SQL(oracle)でご助言いただきた...
-
特定のカラムが更新されたとき...
-
Oracleのview、synonymをCOMPIL...
-
DELETE文とロックについて
-
ROWNUMでUPDATEをしたいのです...
-
テストデータ作成に苦労しています
-
PLSQLのバインド変数の件です。
-
半角英数文字の抽出がしたい。
-
カラム位置変更
-
sql(oracle)で質問です。 テ...
-
descでdefault値やキーなどを表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL、2つのテーブルで条件一致...
-
update文で改行を入れる
-
SQL*LoaderでCSVから指定した列...
-
sqlplusで表示が変なので、出力...
-
テーブル名をカラムとして取得...
-
SQL 複数テーブルのupdate
-
ROWNUMでUPDATEをしたいのです...
-
カラム位置変更
-
SQLでSUMなどの関数でデータが...
-
SQL(oracle)でご助言いただきた...
-
OracleのSQLで同テーブルのカラ...
-
SQLで違うテーブルの値を比較し...
-
特定のカラムが更新されたとき...
-
LONG型の先頭250バイトを Varch...
-
DBからタブ区切りのCSVデータを...
-
Viewのカラムの長さが不明?
-
distinct をexistsに変換する
-
oracle 複数列を1列にまとめる
-
件数とデータを同時に取得する...
-
数値をNUMBER型にするかCHAR型...
おすすめ情報