★★:まあある
エクセルなどでデータを管理している場合に多いのですが、
例えば、店舗ごとの売り上げが年度が増えるごとに横に伸びている場合や、アンケート項目が増えるごとに横に伸びることがよくあります。このようなデータ構造を横持ちと言います。
一方、エクセルのピボットテーブルやデータベースで集計する場合は縦持ちのデータ構造の方が便利です。
データベース設計をする際の「横持ち」と「縦持ち」について、以下のようなメリットとデメリットがあります。
横持ち
メリット
・1レコードに必要な情報が収まるので、見やすい、データ化しやすい(アンケートなど)、検索しやすい
・大量データを処理しやすい
デメリット
・項目を追加する場合、テーブル構造の修正が必要
(例)横持ちデータに2022年度のA店のデータを追加する場合、2022年度のカラムを追加する必要がある縦持ち
メリット
・データが正規化されているため扱いやすい
・項目が追加された場合は行の追加のみで、テーブル構造の修正が必要ない
(例)縦持ちデータに2022年度のA店のデータを追加する場合、2022年度のA店のデータを準備するのみ
デメリット
・1つの情報が複数レコードに分かれるため、横持ちより量が多く、縦に長いデータになる
例えば、連携元のシステムは横持ちのデータとして保持しているが、Dr.Sum では縦持ちのデータとして扱いたい場合は、
Dr.Sum にデータを取り込んだ後にデータ変換(横持ち⇒縦持ち)が必要になります。
ここではデータ変換(横持ち⇔縦持ち)の必要が生じた場合の対応方法について紹介します。
※Dr.Sum Ver. 5.5 の機能を利用しています。Dr.Sum Ver. 5.5 より前のバージョンでは実現できませんのでご注意ください。
横持ち⇒縦持ちの場合SQL文
SELECT
*
FROM
横持テーブル UNPIVOT(来客数 FOR 年度 IN(2019年度, 2020年度, 2021年度))
AS 縦持テーブル;
縦持ち⇒横持ちの場合
SQL文
SELECT
*
FROM
縦持テーブル PIVOT(SUM(来客数) FOR 年度 IN(2019 as 2019年度, 2020 as 2020年度, 2021 as 2021年度))
AS 横持テーブル;
「横持ち」と「縦持ち」のどちらが最適かは連携するシステムによって異なってくるで、ぜひデータ変換(横持ち⇔縦持ち)を活用してください!