■データテーブル(t1)
id name weight sort
1 apple 1 A
2 apple2 3 A
3 apple3 5 B
■weightテーブル(t2)
weight A B
1 20 30
2 30 40
3 40 50
4 50 60
5 60 70
上記のようなテーブルがあった時に、結果として
name weight,fee
apple 1 20
apple2 3 40
apple3 5 70 ←sort=Bなので、t2テーブルのBの方の値
select name,weight,t2.{t1のsortの値} as fee from t1,t2 where t1.weight = t2.weight;
と言った感じにカラム指定で、変数みたいな感じで指定することは可能のなのでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>変数的な扱いでやるのは難しい
できませんよ。
どうしてもやるならprocedureで処理するか、以下のように
ピボットをつかってみると少しは簡単にかけるでしょう
//元データ
create table t1(id int primary key,name varchar(30),weight int,sort varchar(30));
insert into t1 values(1,'apple',1,'A'),(2,'apple',3,'A'),(3,'apple',5,'B'),(4,'apple',4,'C');
create table t2(weight int primary key,A int,B int,C int,D int);
insert into t2 values(1,20,30,40,50),(2,30,40,50,60),(3,40,50,60,70),(4,50,60,70,80),(5,60,70,80,90);
create table t3(sort varchar(30),A int,B int,C int,D int);
insert into t3 values('A',1,0,0,0),('B',0,1,0,0),('C',0,0,1,0),('D',0,0,0,1);
//集計
select id,name,weight,sort,t2.A*t3.A+t2.B*t3.B+t2.C*t3.C+t2.D*t3.D as fee
from t1
inner join t2 using(weight)
inner join t3 using(sort);
No.1
- 回答日時:
直接流用はできません、こうしてください
//元データ
create table t1(id int primary key,name varchar(30),weight int,sort varchar(30));
insert into t1 values(1,'apple',1,'A'),(2,'apple',3,'A'),(3,'apple',5,'B');
create table t2(weight int primary key,A int,B int);
insert into t2 values(1,20,30),(2,30,40),(3,40,50),(4,50,60),(5,60,70);
//抽出
select t.name,t1.weight
,case t1.sort when 'A' then t2.A when 'B' then t2.B end as fee
from t1
inner join t2 on t1.weight=t2.weight
ありがとうございます!確かにできるのですが、実際のデータはA、Bだけでなく大量にあるので。。。ちょっと長くなってしまいます。。。変数的な扱いでやるのは難しいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Oracle SQL update方法 2 2022/06/22 14:07
- 英語 WEIGHT というのは、 マガジン や ストック を含んだ WEIGHT なのでしょうか? 1 2022/04/28 20:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQLサーバから、項目の属性(型...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
[MySQL] UNIQUE制約の値を更新...
-
select文のwhere句に配列を入れ...
-
SQLにて特定の文字を除いた検索...
-
selectした大量データをinsert...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
MySQLのint型で001と表示する方...
-
VIEWの元のテーブルのindexって...
-
複数テーブルのGROUP BY の使い...
-
Unionした最後にGROUP BYを追加...
-
Access パラメータクエリをcsv...
-
LAST_INSERT_IDで同時にアクセ...
-
PL/SQLの変数について
-
[SQLServer] テーブル名からカ...
-
VMwareがCDドライブを認識する...
-
1対多結合で多を絞り込み条件と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報