例
多くの場合は、WHERE 節によって単一のメンバを除外する必要があります。例えば、まず以下のクエリを考えてみます。EXCEPT を使用しています。
SELECT aged.[age bucket].MEMBERS ON 1 FROM patients WHERE EXCEPT(aged.[age group].MEMBERS,aged.[age group].[0 to 29])
1 0 to 9 *
2 10 to 19 *
3 20 to 29 *
4 30 to 39 166
5 40 to 49 139
6 50 to 59 106
7 60 to 69 86
8 70 to 79 62
9 80+ 41
%NOT 関数を使用して、前のクエリを以下のように書き換えることができます。
SELECT aged.[age bucket].MEMBERS ON 1 FROM patients WHERE aged.[age group].[0 to 29].%NOT
1 0 to 9 *
2 10 to 19 *
3 20 to 29 *
4 30 to 39 166
5 40 to 49 139
6 50 to 59 106
7 60 to 69 86
8 70 to 79 62
9 80+ 41
この関数を列軸または行軸に使用すると、この関数がメンバを返すことを確認できます。
SELECT aged.[age group].[0 to 29].%NOT ON 1 FROM patients
Not 0 to 29 600
このように、メンバの名前として、NOT の後に除外するメンバの名前を指定します。
%NOT 関数には、いくつかの利点があります。
-
システムは、そのレベルのすべてのメンバを実体化する必要がなくなります。
-
効率を上げるために、処理の初期部分で否定が行われます。
-
%NOT は、単純なタプル式を形成するために、他のフィルタと (内部的に) 結合できる単一のメンバを返します。