テーブルの_seqと言うカラム和名に変更して取得し、その項目を1つのカラムとして出力したいのですが、caseで分岐すると行として表示されてしまうのですが1つのSQLで書きしたなって欲しい値のようになりますでしょうか?
concatを使うと値がない場合nullが表示され、複合主キーのためGROUP_CONCATでgroup byされてしまうと1つしか表示されなくなってしまいます。
利用しているのはmysqlです
_id | _bikou | _type | name |
---|---|---|---|
14 | 備考1 | 01 | 山田太郎 |
14 | 備考2 | 02 | 山田太郎 |
_id | _type | _seq |
---|---|---|
14 | 01 | 00 |
14 | 02 | 00 |
14 | 02 | 01 |
14 | 02 | 02 |
``` | ||
create table user(_id varchar(100),_bikou varchar(100), _type varchar(100),name varchar(100)); | ||
create table user_type(_id varchar(100), _type varchar(100),_seq varchar(100)); | ||
insert into user(_id,_bikou, _type,name) values("14","備考1","01","山田太郎"); | ||
insert into user(_id,_bikou, _type,name) values("14","備考2","02","山田太郎"); | ||
insert into user_type(_id, _type,_seq) values("14","01","00"); | ||
insert into user_type(_id, _type,_seq) values("14","02","00"); | ||
insert into user_type(_id, _type,_seq) values("14","02","01"); | ||
insert into user_type(_id, _type,_seq) values("14","02","02"); | ||
select |
u.name as 名前, _bikou, case when ut._seq = '00' then '無記名' when ut._seq = '01' then '新着' when ut._seq = '02' then '既存' end as 要約内容
from user u
inner join user_type ut
on u._id = ut._id and u._type = ut._type
出力結果
名前 _bikou 要約内容
山田太郎 備考1 無記名
山田太郎 備考2 無記名
山田太郎 備考2 新着
山田太郎 備考2 既存
なって欲しい値
名前 _bikou 要約内容
山田太郎 備考1 無記名
山田太郎 備考2 無記名,新着,既存
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 01:12