★★:まあある

エクセルなどでデータを管理している場合に多いのですが、
例えば、店舗ごとの売り上げが年度が増えるごとに横に伸びている場合や、アンケート項目が増えるごとに横に伸びることがよくあります。このようなデータ構造を横持ちと言います。

一方、エクセルのピボットテーブルやデータベースで集計する場合は縦持ちのデータ構造の方が便利です。

データベース設計をする際の「横持ち」と「縦持ち」について、以下のようなメリットとデメリットがあります。

横持ち
 メリット
  ・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 横持テーブル
;


「横持ち」と「縦持ち」のどちらが最適かは連携するシステムによって異なってくるで、ぜひデータ変換(横持ち⇔縦持ち)を活用してください!