THUMGY Data 機能説明書

クロス集計

更新日 2025/11/17

機能

《クロス集計》は、縦軸フィールドの値を行、横軸フィールドの値を列とする表を作り、行と列が交わるセルに、該当するレコードの件数や合計を求める機能です。結果は画面に表示するか、新しいテーブルとして作成できます。元のテーブルは変更されません。

売上日得意先商品No数量担当者
2024/04/10A社A014佐藤
2024/04/12B社B023鈴木
2024/05/20A社A016田中
2024/05/25A社B025田中
2024/06/15B社A0110鈴木
2024/06/18C社B023高橋
2024/06/20A社A012高橋
元のテーブル(売上明細)

→

得意先数量_A01数量_B02
A社125
B社103
C社03
クロス集計の結果(縦軸:得意先、横軸:商品No、小計:数量)
  • 結果の行は、縦軸フィールドの値の昇順に並びます(元のテーブルの順ではありません)。数値は値の順、日付は日付の順、文字は文字コードの順です。縦軸フィールドが空欄の行は先頭になります。
  • 縦軸フィールドを複数選択した場合は、すべての値の組み合わせごとに1行になります(レコードがある組み合わせだけ)。並び順は1つ目のフィールドの順で、同じ場合は2つ目のフィールドの順です。
  • 文字の比較では、大文字・小文字、全角・半角、前後の空白が区別されます(例:「A社」と「a社」は別の行、別の列です)。
  • 該当するレコードがないセルは、0(時間の場合は00:00:00)になります(例のC社のA01)。

メニュー

《分析》-《クロス集計》

  • テーブルを開いている場合に使用できます。開いているテーブルがクロス集計の元のテーブルになります。
  • テーブルの画面で条件式を設定している場合は、その条件式が「条件式」に入力された状態で開きます。
  • テーブルの画面で列を1つまたは2つ選択してからクリックすると、その列が縦軸フィールドに選択された状態で開きます。
  • 列を3つ以上選択してからクリックすると、画面は開かずにクロス集計が実行され、結果が画面に表示されます。最後に選択した列が横軸フィールド、それ以外の列が選択した順に縦軸フィールドになり、各セルにはレコードの件数が表示されます。
  • 操作ログからクロス集計のコマンドを修正することもできます(「■ 操作ログからコマンドを修正する場合」参照)。

操作ログからコマンドを修正する場合

操作ログでクロス集計のコマンドを修正すると、コマンドの内容が設定された状態で画面が開きます。

  • 縦軸フィールドとクロス集計方法のフィールドは、コマンドに記述された順に選択されます。テーブルにないフィールドは選択されません。
  • 横軸フィールドがテーブルにない場合は、テーブルの最初のフィールドが選択されます。
  • 「小計/文字列の書き出し」、「カウントを含める」、「出力するレコード」、出力先、条件式は、コマンドのとおりに設定されます。
  • テーブルに保存したコマンドの場合は、保存先に「04_table」フォルダからの「フォルダ名¥テーブル名.hdf5」が表示されます。

設定内容

クロス集計 の画面
  • 1元のテーブル:クロス集計する元のテーブルの、フォルダ名とテーブル名が表示されます。
  • 2《フィールド/レコード》ボタン(必須):結果の行の単位を選択します。初期値は「フィールド」です。
    • 「フィールド」:縦軸フィールド(4)の値ごとに1行にまとめます。
    • 「レコード」:テーブル全体(条件式に合うレコード)を1行にまとめます。縦軸フィールドの一覧は使用できなくなり、選択は解除されます(「■「レコード」を選択した場合」参照)。
  • 3《フィールド選択》ボタン:「フィールド選択」画面を開き、縦軸フィールドをまとめて選択・解除できます。
  • 4縦軸フィールド(必須):結果の行になるフィールドの行をクリックして選択します(もう一度クリックで解除)。
    • 左端の番号は選択した順番です。この順に、結果の列と行が並びます。
    • 見出しのチェックボックス(またはCtrl+A)で、すべてのフィールドを選択・解除します。
    • 「フィールド」の場合は、1つ以上選択する必要があります。
  • 5横軸フィールド(必須):結果の列になるフィールドを一覧から1つ選択します。値ごとに列が作られます。初期値は、テーブルの最初のフィールドです。
    • 一覧には「フィールド名 : データ型」が表示されます。すべてのデータ型のフィールドを選択できます。
    • 縦軸フィールドと同じフィールドも選択できます。
  • 6《小計/文字列の書き出し》ボタン(必須):セルに出力する値を選択します。初期値は「小計」です。
    • 「小計」:クロス集計方法(8)の合計を出力します。フィールドを選択しない場合は、レコードの件数を出力します。
    • 「文字列の書き出し」:クロス集計方法の文字列の値を出力します(「■「文字列の書き出し」を選択した場合」参照)。
    • 切り替えると、一覧のフィールドが入れ替わり、選択は解除されます。
  • 7《フィールド選択》ボタン:「フィールド選択」画面を開き、クロス集計方法のフィールドをまとめて選択・解除できます。
  • 8クロス集計方法(任意):セルに出力するフィールドを選択します。選択方法は4と同じです。
    • 「小計」の場合は、数値型(整数・10進数)と、時間の書式(hh:mm:ss など)の日付型のフィールドが表示されます。
    • 「文字列の書き出し」の場合は、文字型のフィールドが表示されます。
    • 複数選択すると、横軸の値ごとに、選択した順にフィールドの列が並びます。
    • 表示できるフィールドがない場合は、「小計できる数値・時刻フィールドがありません」または「書き出しできる文字列フィールドがありません」と表示されます。
  • 9カウントを含める:オンにすると、レコードの件数の列(「カウント_」で始まる列)を追加します。初期値はオフです。「文字列の書き出し」の場合は使用できません。
  • 10出力するレコード(最初の1件目/すべてのレコード):「文字列の書き出し」の場合に、セルに出力する値を選択します。「文字列の書き出し」に切り替えると、「最初の1件目」が選択されます。
    • 「最初の1件目」:該当するレコードのうち、元のテーブルで最初のレコードの値を出力します。
    • 「すべてのレコード」:該当するすべての値の組み合わせを、1行ずつ出力します。
  • 11出力先(画面/テーブル)(必須):クロス集計の結果の出力先を選択します。初期値は「画面」です。
    • 「画面」:結果をメイン画面に表示します。「小計」の場合は、最後の行に各列の合計が表示されます。
    • 「テーブル」:結果を新しいテーブルとして作成します。テーブルの名前は15に入力します。
  • 12《式ビルダー》ボタン:「式ビルダー」画面を開き、フィールドや関数を選んで条件式を作成できます。
  • 13条件式(任意):クロス集計するレコードの条件を入力します。条件に合うレコードだけを集計します。空欄の場合は、すべてのレコードを集計します。
    • 列(横軸の値)も、条件に合うレコードの値だけで作られます。
    • 入力中に、関数やフィールドの候補が表示されます(Ctrl+Spaceで表示、Escで閉じます)。
    • 「×」で入力内容を消去します。正しい条件式であることを確認すると、緑の「✓」が表示されます。
  • 14《検証》ボタン:条件式が正しいかを確認します(Ctrl+Enter)。誤りがある場合は、メッセージが表示されます。
  • 15ファイル保存先(テーブル):作成するテーブルの名前を入力します(必須)。出力先が「テーブル」の場合に入力できます。
    • テーブル名だけの場合は「04_table」フォルダに、「フォルダ名¥テーブル名」の場合はそのフォルダに作成されます。フォルダがない場合は作成されます。
    • 拡張子(.hdf5)は省略できます。「04_table」フォルダ以外の場所には保存できません。
    • テーブル名の長さは、64文字までです。
    • 記号(「-」「.」「#」など)や全角スペースは使用できません。名前の最後に「¥」「/」、途中に「..」は入力できません。
    • 元のテーブルと同じ名前は使用できません(大文字・小文字やフォルダが違っても同じ名前とみなされます)。
    • 同じ名前のテーブルがすでにある場合は、上書きしてよいかの確認メッセージが表示されます。「いいえ」を選択すると、実行せずに画面に戻ります。
  • 16《参照》ボタン:保存画面を開き、保存先を選択できます。
  • 17コマンド:現在の設定で実行されるコマンドが表示されます(「◇操作ログ」参照)。
  • 18《コピー》ボタン:コマンドをクリップボードにコピーします。
  • 19《キャンセル》ボタン:実行せずに画面を閉じます(Escキー)。確認メッセージで「はい」を選択すると閉じます。
  • 20《実行》ボタン:実行します(Enterキー)。クロス集計が終わると画面が閉じ、結果が表示されます(「テーブル」の場合は、作成したテーブルが開きます)。

「レコード」を選択した場合

縦軸フィールドの一覧が灰色になり、選択できなくなります。テーブル全体(条件式に合うレコード)が1行にまとめられます。

クロス集計 の画面

「文字列の書き出し」を選択した場合

クロス集計方法の一覧に文字型のフィールドが表示され、「出力するレコード」が使用できるようになります。「カウントを含める」は使用できません。

クロス集計 の画面

「出力先」で「画面」を選択した場合

「ファイル保存先」と《参照》ボタンは使用できません。入力済みの保存先は残りますが、チェックされず、使用されません。

クロス集計 の画面

クロス集計の結果

オプションの設定によって、結果は次のようになります。例は「◇機能」と同じテーブルで、縦軸フィールドは「得意先」、横軸フィールドは「商品No」です。

クロス集計方法を選択しない場合

セルには、該当するレコードの件数が入ります。列の名前は「横軸のフィールド名_値」です。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

得意先商品No_A01商品No_B02
A社31
B社11
C社01
クロス集計の結果
  • 「カウントを含める」をオンにすると、列の名前が「カウント_商品No_A01」のようになります(値は同じです)。

クロス集計方法を選択した場合(小計)

セルには、選択したフィールドの合計が入ります。列の名前は「クロス集計方法のフィールド名_値」です。例は「数量」を選択した場合です。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

得意先数量_A01数量_B02
A社125
B社103
C社03
クロス集計の結果
  • 合計の列は、元のフィールドと同じデータ型になります。小数点以下の桁数は元のフィールドと同じで、時間の書式のフィールドは時間で合計されます(例:12:15:00)。
  • 複数選択した場合は、横軸の値ごとに、選択した順に列が並びます(例:「数量_A01」「単価_A01」「数量_B02」「単価_B02」)。

「カウントを含める」をオンにした場合

合計の列ごとに、レコードの件数の列「カウント_フィールド名_値」が追加されます。合計の列の名前は「フィールド名_横軸のフィールド名_値」になります。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

得意先数量_商品No_A01カウント_数量_A01数量_商品No_B02カウント_数量_B02
A社12351
B社10131
C社0031
クロス集計の結果

「レコード」を選択した場合

テーブル全体が1行にまとめられます。縦軸フィールドの列はありません。例はクロス集計方法に「数量」を選択した場合です。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

数量_A01数量_B02
2211
クロス集計の結果

条件式を入力した場合

条件に合うレコードだけが集計されます。例は条件式「[数量] >= 6」の場合です。条件に合うレコードの商品Noは「A01」だけなので、「A01」の列だけが作られます。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

得意先数量_A01
A社6
B社10
クロス集計の結果
  • 条件に合うレコードがない場合も、エラーにはならず、縦軸フィールドの列だけの(レコードが0件の)結果になります。

「画面」に出力した場合

「小計」の場合は、最後の行に各列の合計が表示されます(縦軸フィールドの列は空欄です)。

得意先商品No数量
A社A014
B社B023
A社A016
A社B025
B社A0110
C社B023
A社A012
元のテーブル(得意先・商品No・数量)

→

得意先数量_A01数量_B02
A社125
B社103
C社03
2211
画面に表示される結果

「文字列の書き出し」で「最初の1件目」を選択した場合

セルには、該当するレコードのうち、元のテーブルで最初のレコードの値が入ります。例はクロス集計方法に「担当者」を選択した場合です。

得意先商品No担当者
A社A01佐藤
B社B02鈴木
A社A01田中
A社B02田中
B社A01鈴木
C社B02高橋
A社A01高橋
元のテーブル(得意先・商品No・担当者)

→

得意先担当者_A01担当者_B02
A社佐藤田中
B社鈴木鈴木
C社高橋
クロス集計の結果
  • 該当するレコードがないセルは、空欄になります。件数の列や合計の行はありません。

「文字列の書き出し」で「すべてのレコード」を選択した場合

該当するすべての値の組み合わせが、1行ずつ出力されます。A社のA01には「佐藤」「田中」「高橋」の3つの値があるため、A社は3行になります。

得意先商品No担当者
A社A01佐藤
B社B02鈴木
A社A01田中
A社B02田中
B社A01鈴木
C社B02高橋
A社A01高橋
元のテーブル(得意先・商品No・担当者)

→

得意先担当者_A01担当者_B02
A社佐藤田中
A社田中田中
A社高橋田中
B社鈴木鈴木
C社高橋
クロス集計の結果
  • 値は元のテーブルの順に組み合わされます。値の種類が多いと、行の数が大きく増えます。

横軸の値と列の名前

  • 列は、横軸の値を文字として並べた順に作られます。数値や日付も文字の順です(例:「100」「25」「5」の順)。
  • 値に含まれる記号や空白は、列の名前では「_」になります(例:「2024/04/10」の列は「数量_2024_04_10」)。
  • 横軸の値が空欄のレコードは、名前が「BLANK」で終わる列にまとめられます。

入力内容に誤りがある場合

《実行》ボタンをクリックしたときに、縦軸フィールドが選択されていない、保存先が空欄などの誤りがあると、画面の左下にメッセージが表示され、該当する項目が赤枠で示されます。項目を修正するとメッセージは消え、《実行》ボタンが使用できるようになります。

クロス集計 の画面
  • 条件式に誤りがある場合は、実行時に誤りの内容を示す画面が表示されます。画面は閉じないので、条件式を修正してもう一度実行してください。
  • 「文字列の書き出し」で「レコード」を選択し、クロス集計方法を選択せずに実行すると、「エクスポートするフィールドを選択してください。」と表示されます。クロス集計方法を選択してください。
  • 「画面」に出力する場合、結果の列が100を超えるとメッセージが表示されます。「テーブル」を選択してください。

操作ログ

OPEN "元のテーブル"
CROSSTAB TEXT ON [縦軸1] ・・・ COLUMNS [横軸] SUBTOTAL [方法1] ・・・ OUTPUT ALLRECORDS IF 条件式 TO SCREEN COUNT OPEN

各キーワードの意味は、次のとおりです。

キーワード内容設定内容
OPEN “元のテーブル”クロス集計する元のテーブルを開きます1
TEXT「文字列の書き出し」で出力します6
ON [縦軸1] ・・・縦軸フィールド。選択した順に記述します4
ON RECORDSテーブル全体を1行にまとめます2
COLUMNS [横軸]横軸フィールド5
SUBTOTAL [方法1] ・・・クロス集計方法。選択した順に記述します8
OUTPUT ALLRECORDS「すべてのレコード」を出力します10
IF 条件式クロス集計するレコードの条件13
TO SCREEN結果を画面に表示します11
TO “保存先”結果のテーブルの名前15
COUNTカウントを含める9
OPEN結果を開きます—
  • 下線部(オプション)は、該当する項目を設定した場合に記述されます。「SUBTOTAL」は、クロス集計方法のフィールドを選択した場合に記述されます。
  • 出力先が「テーブル」の場合は、「TO SCREEN」の代わりに「TO “保存先”」と記述されます。
  • 一覧のすべてのフィールドを行の順に選択した場合は、フィールド名の代わりに「ALLFIELDS」と記述されます。

コマンドを直接記述する場合(スクリプトなど)

  • フィールド名は「[ ]」で、テーブル名は「”」で囲んで記述します。
  • 「COLUMNS」に記述できるフィールドは1つだけです。2つ以上記述するとエラーになります。
  • 「COUNT」「OPEN」は、「TO」の後に記述します。
  • 「TEXT」がない場合、「SUBTOTAL」に記述できるのは、数値型と時間の書式の日付型のフィールドだけです。
  • テーブルにないフィールドを記述したり、結果のテーブルに元のテーブルと同じ名前を指定したりするとエラーになります。

オプションの例

オプションの記述クロス集計の結果
ON [得意先] COLUMNS [商品No]各セルにレコードの件数が入ります(「商品No_A01」など)
… SUBTOTAL [数量]各セルに数量の合計が入ります(「◇機能」の例)
… SUBTOTAL [数量] TO SCREEN COUNT「カウント_数量_A01」などの件数の列を追加します
ON RECORDS … SUBTOTAL [数量]結果は1行(「22」「11」)になります
TEXT … SUBTOTAL [担当者]各セルに最初のレコードの担当者が入ります
TEXT … SUBTOTAL [担当者] OUTPUT ALLRECORDS担当者のすべての組み合わせを出力します(A社は3行)
  • 例は「◇クロス集計の結果」と同じテーブル(縦軸:得意先、横軸:商品No)です。

例

OPEN "売上¥売上明細"
CROSSTAB ON [得意先] COLUMNS [商品No] SUBTOTAL [数量] TO SCREEN OPEN
CROSSTAB ON [得意先] COLUMNS [商品No] SUBTOTAL [数量] IF [数量] >= 6 TO "得意先別" COUNT OPEN
CROSSTAB TEXT ON [得意先] COLUMNS [商品No] SUBTOTAL [担当者] OUTPUT ALLRECORDS TO SCREEN OPEN