SQLの窓 イラストAC フリー素材

2019年06月27日

複数行のグループデータを1行にまとめるSQL

縦のデータを



case で行毎の表示列を作成する
select 
	コード

	,case 行 
		when 1 then 内容
		else null
	end as 内容1

	,case 行 
		when 2 then 内容
		else null
	end as 内容2

	,case 行 
		when 3 then 内容
		else null
	end as 内容3

 from data



後は、group と max で一つの行に
select 
	コード

	,max(case 行 
		when 1 then 内容
		else null
	end) as 内容1

	,max(case 行 
		when 2 then 内容
		else null
	end) as 内容2

	,max(case 行 
		when 3 then 内容
		else null
	end) as 内容3

 from data
 group by コード





CREATE TABLE `data` (
  `コード` int(11) NOT NULL DEFAULT '0',
  `行` int(11) NOT NULL DEFAULT '0',
  `内容` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`コード`,`行`)
)


MySQL でのサンプルですが、SQLServer、PostgreSQL、Oracle でも可能です。

各構文のサンプルはこちらから

※ 分解には、UNION を使います。



【DB関連の最新記事】
posted by at 2019-06-27 23:09 | DB関連 | このブログの読者になる | 更新情報をチェックする