一.概要
1.問題の概要
データセットでは、SQLの order by A, B でまず結果をAで並べ替えてから、Bで並べ替えることができます。本マニュアルでは、デザイナーの展開後ソートで複数列の並べ替えを実現する方法について説明します。
例:展開後、結果は販売員で並べ替えられ、同じ販売員は売上で並べ替えられます(下図参照)。

2.実現方法
1.文字データはINARRAY(文字, SORTARRAY(UNIQUEARRAY(拡張された全ての文字)))で並べ替えることができます。
2.数値データはそれ自体のサイズで直接並べることができます。
1.と2.の結果は、新しい値を取得するために計算処理され、最後に新しい値に従って並べ替えられます。
二.例示
1.データ準備
一般の帳票を作成し、データベースクエリds1を作成します。SQLステートメントはSELECT* FROM 売上where 地域='中国北部'。
2.帳票設計
1.データセットのフィールドをセルA2~E2に順次にドラッグします(下図参照)。

2.セルA2をデータ列と設定します。下図の通りです。

3.展開後ソート
セルA2を選択し、展開後に並べ替えを昇順に設定し、数式を入力します:INARRAY(B2,SORTARRAY(UNIQUEARRAY(B2[!0])))*POWER(10, LEN(MAX(E2[!0])))+E2
この数式には、セルB2とE2を組み合わせて計算しています。この組み合わせ計算によって、まずB2による並べ替え、次にE2による並べ替え効果が得られます。式の分解説明を次に示します:
一部 | 説明 |
|---|---|
SORTARRAY(UNIQUEARRAY(B2[!0])) | セルB2はテキストなので、SORTARRAY関数で並べ替える |
INARRAY(B2,SORTARRAY(UNIQUEARRAY(B2[!0]))) | SORTARRAY関数でB2を既に並べ替えており、データを配列として保存されている 次に、INARRAY関数で配列内の各テキストデータの位置をエクスポートする 並べ替えられたテキストを数値に変換することである。これは、E2との組み合わせ計算に便利であり、次にE2を並べ替える |
*POWER(10, LEN(MAX(E2[!0]))) | 固有の累乗である。前の式にこの数値を掛けるのは、テキストの位置を表す数値を大きくするためである ここでは、B2に非常に大きい数を掛けることで、E2よりB2が優先でソートする。 |
+E2 | B2セルが同じ場合、グループにセルE2の値が加算され、得られる合計値が並べ替えられる。 つまり、B2を並べ替えてから、E2を並べ替える。 |
手順は下図の通りです:
4.プレビュー
1.PC端末
レポートを保存し、改ページプレビューをクリックすると、効果は1.1の説明に示します。
2.モバイル端末
APPとHTML5端末でプレビューでき、効果は下図のようになります。
