sqlのselect ~where等で以下のデータが抽出できますでしょうか。
テーブルに以下のデータが格納されています。
県コード コード 商品名 単価
------------------------------------------------------------
01 1000 カメラ(中国製) 10,000円
01 2000 カメラ(日本製) 30,000円
01 3000 カメラ(アメリカ製) 40,000円
------------------------------------------------------------
02 1000 カメラ(中国製) 10,000円
02 3000 カメラ(アメリカ製) 40,000円
------------------------------------------------------------
上記のようなデータのなから、一つの県から、1つの商品(コード:2000(カメラ(日本製))、3000(カメラ(アメリカ製))、1000(カメラ(中国製))の優先順位で1つを選択)をselect文で抽出可能でしょうか。上記のデータならば、以下のデータを抽出したいのですが。
01 2000 カメラ(日本製) 30,000円
02 3000 カメラ(アメリカ製) 40,000円
2件のみを抽出できますか。
No.1ベストアンサー
- 回答日時:
こんなかんじでどうでしょう?
未検証なので、多少の修正は必要だと思います。
DECODEを使用することで、コードを優先順位(1~3)に置き換えて、
その値が県コードごとの最小値であることをサブクエリを使用し、
条件にしています。
+--------------------------------------------+
SELECT T1.県コード,T1.コード,T1.商品名,T1.単価
FROM テーブル名 T1
WHERE DECODE(T1.コード,2000,1,3000,2,1000,3) =
(SELECT MIN(DECODE(T2.コード,2000,1,3000,2,1000,3))
FROM テーブル名 T2
WHERE T1.県コード = T2.県コード);
No.4
- 回答日時:
こんな方法もあります。
select 県コード,
substrb(max(decode(コード,2000,2,3000,1,0)
|| コード || ' ' || 商品名 || ' ' || 単価),2,
lengthb(max(decode(コード,2000,2,3000,1,0)
|| コード || 商品名 || 単価)) + 1)
"コード 商品名 単価"
from tbl
group by 県コード;
先頭のdecode文(1桁)を非表示にするためsubstrbを使用しています。
lengthbの+1は表示データから半角スペース2つの連結を取り除いたものを
対象にしているため、decode桁数の差分(-1)に2が加えられ+1となります。
<実行例>
県
--
コード 商品名 単価
--------------------------------------------------------------------------------
01
2000 カメラ(日本製) 30000
02
3000 カメラ(アメリカ製) 40000
No.2
- 回答日時:
こんな感じでどうでしょうか。
前提として県コードとコードで一意である必要があります。
WITH TMP AS (
SELECT
県コード,コード,商品名,単価
DECODE(コード,2000,1,3000,2,1000,3) AS コード順序
FROM テーブル
)
SELECT * FROM TMP
WHERE ( 県コード , コード順序) IN (
SELECT 県コード , MIN(コード順序) FROM TMP
GROUP BY 県コード
)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
沿線コード
-
Oracle グルーピング
-
CREATE テーブルでの複数外部...
-
Access終了時の最適化が失敗?
-
GROUP BYを行った後に結合した...
-
実績累計の求め方と意味を教え...
-
Accessで別テーブルの値をフォ...
-
レコードが存在しなかった場合
-
Oracleでの文字列連結サイズの上限
-
"カレントレコードがありません...
-
select句副問い合わせ 値の個...
-
キーが同じを複数行を1行にま...
-
アクセスでレポートの1印刷内...
-
差し込み印刷のレコード数について
-
SELECTの結果で同一行を複数回...
-
最新の日付とその金額をクエリ...
-
Excelで、改行がある場合の条件...
-
ワードの差込印刷で教えて下さ...
-
sqlplusの処理が途中でとまる
-
ACCESSで大量の更新を行うと「...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access終了時の最適化が失敗?
-
CREATE テーブルでの複数外部...
-
Order by句でバインド変数を使...
-
沿線コード
-
平成20年 春期 基本情報技術者 ...
-
10営業日前の日付を取得したい...
-
SQLについて
-
困っています。ORACLE_SQL 複数...
-
SQLServer 日付が直前のレコー...
-
SQL文の書き方
-
複数テーブル間の集計
-
【SQL】またぎデータの検索の仕方
-
SQLで<>を使用するとき、
-
Excelファイルのデータをテーブ...
-
Access2000での複合検索再び
-
Oracle 文字コードについて
-
Oracleビュー:同じ意味で異な...
-
一度のSQL発行で結果を得るには...
-
SQLの題材
-
PLSQLは実際にどんな処理をする...
おすすめ情報