EQLでは、定義した文を他の文から参照できます。
複数のEQL副問合せを、1つのナビゲーション問合せのコンテキストの中で指定できます。それぞれが別の分析ビューに、または別の粒度レベルの小計に対応します。式でも、他の計算済の文からの値を使用できます。これが役に立つのは、詳細なレベルのバケットの中で分析計算するために、より粗いレベルの小計が必要である場合です。
たとえば、指定された年の各販売員の売上の割合(%)を計算するには、その年の総計も計算する必要があります。ルックアップ表を使用すると、この種の問合せを作成できます。
ルックアップ式は、単純な形式の結合です。先行する文の結果を、ルックアップ表として扱います。
<LookupExpr> ::= <statement-name>[<LookupList>].<attribute-name>角カッコ演算子はリテラルであり、レコード・セットおよびグルーピング属性を識別するために使用されます。一方、ドット演算子もリテラルですが、これはフィールドを識別するために使用されます。
<LookupList> ::= <empty> ::= <SimpleExpr> [,<LookupList>]このBNF構文では、角カッコは2番目のLookupListをオプションで使用することを示します。
ルックアップ・リストは、指定された文のグルーピング属性に対応します。結果がNULLになるのは、ルックアップ・リストがターゲット・グループ・キー値に一致しない場合や、一致するターゲット・グループ・キー値のターゲット列がNULLである場合です。
DEFINE YearTotals AS SELECT SUM(SalesAmount) AS Total GROUP BY Year ; RETURN AnnualCategoryPcts AS SELECT SUM(SalesAmount) AS Total, Total/YearTotals[Year].Total AS Pct GROUP BY Year, Category ; RETURN YoY AS SELECT YearTotals[Year].Total AS Total, YearTotals[Year-1].Total AS Prior, (Total-Prior)/Prior AS PctChange GROUP BY Year
たとえば、ProductType別、Region別の売上比率を計算するとします。集計の1つではRegionごとにグルーピングした合計を計算し、それに続く集計でRegionとProductTypeごとにグルーピングした合計を計算します。
この2番目の集計で使用する式で、Regionの集計の結果を参照します。つまり、RegionとProductTypeのペアごとに、そのRegion全体の小計にProductTypeが占める割合を計算できます。
DEFINE RegionTotals AS SELECT SUM(Amount) AS Total GROUP BY Region RETURN ProductPcts AS SELECT 100 * SUM(Amount) / RegionTotals[Region].Total AS PctTotal GROUP BY Region, ProductType
この例では、四半期別に、各製品タイプの売上の割合を計算します。
この問合せでは、1つの文で計算した情報を別の文で使用できるようにする必要があります。
DEFINE QuarterTotals AS SELECT SUM(Amount) AS Total GROUP BY Quarter ; RETURN ProductPcts AS SELECT 100 * SUM(Amount) / QuarterTotals[Quarter].Total AS PctTotal GROUP BY Quarter, ProductType