この関数が複数のレベルのメンバを返す場合、その階層が以下のようにメンバの順序に影響します。より高いレベルのメンバの後に次に低いレベルの子が続き、さらにより高いレベルの次のメンバが続き、以下同様になります。SELF_AND_AFTER の例を参照してください。
例
参考に Patients キューブでは、BirthD ディメンジョンに以下のレベルが高いものから低いものの順に格納されます。
-
[BirthD].[H1].[Decade]
-
[BirthD].[H1].[Year]
-
[BirthD].[H1].[Quarter Year] (年と四半期を表します)
-
[BirthD].[H1].[Period] (年と月を表します)
-
[BirthD].[H1].[Date] (年、月、日を表します)
以下の例では、1990 年の [BirthD].[H1].[Period] レベル内のすべての子孫を取得します。
SELECT DESCENDANTS(birthd.1990,birthd.period) ON 1 FROM patients
1 Jan-1990 *
2 Feb-1990 2
3 Mar-1990 1
4 Apr-1990 1
5 May-1990 1
6 Jun-1990 *
7 Jul-1990 2
8 Aug-1990 2
9 Sep-1990 1
10 Oct-1990 3
11 Nov-1990 1
12 Dec-1990 *
この例では OPTIONAL_FLAG に既定値 (SELF) を使用するため、この関数は期間レベルのメンバである 1990 の子孫のみを返します。
以下のバリエーションは NON EMPTY を使用するため、患者が生まれなかった期間をフィルタで除外します。
SELECT NON EMPTY DESCENDANTS(birthd.1990,birthd.period) ON 1 FROM patients
1 Feb-1990 2
2 Mar-1990 1
3 Apr-1990 1
4 May-1990 1
5 Jul-1990 2
6 Aug-1990 2
7 Sep-1990 1
8 Oct-1990 3
9 Nov-1990 1
この期間レベルは、年レベルの 2 レベル下で、以下のクエリ (level_offset に 2 を使用) は最初のクエリと同等です。
SELECT DESCENDANTS(birthd.1990,2) ON 1 FROM patients
1 Jan-1990 *
2 Feb-1990 2
3 Mar-1990 1
4 Apr-1990 1
5 May-1990 1
6 Jun-1990 *
7 Jul-1990 2
8 Aug-1990 2
9 Sep-1990 1
10 Oct-1990 3
11 Nov-1990 1
12 Dec-1990 *
次のバリエーションは AFTER を使用します。
SELECT DESCENDANTS(birthd.1990,birthd.period,AFTER) ON 1 FROM patients
1 Jan 1 1990 *
2 Jan 2 1990 *
3 Jan 3 1990 *
...
363 Dec 29 1990 *
364 Dec 30 1990 *
365 Dec 31 1990 *
この例は、期間レベルの下のすべてのレベルの 1990 の子孫を返します。この場合、下のレベルは日付の 1 つしかありません。これは、年、月、日に対応します。
次のバリエーションは SELF_AND_AFTER を使用します。この例は、複数のレベルのメンバを返し、これらのメンバが返される順序を示します。
SELECT DESCENDANTS(birthd.1990,birthd.period,SELF_AND_AFTER) ON 1 FROM patients
1 Jan-1990 *
2 Jan 1 1990 *
3 Jan 2 1990 *
4 Jan 3 1990 *
...
33 Feb-1990 2
34 Feb 1 1990 *
35 Feb 2 1990 *
36 Feb 3 1990 1
...
346 Dec-1990 *
347 Dec 1 1990 *
348 Dec 2 1990 *
349 Dec 3 1990 *
...
377 Dec 31 1990 *
次のバリエーションは BEFORE を使用します。
SELECT DESCENDANTS(birthd.1990,birthd.period,BEFORE) ON 1 FROM patients
1 1990 14
2 Q1 1990 3
3 Q2 1990 2
4 Q3 1990 5
5 Q4 1990 4
この場合、クエリは、期間レベルの上のレベルのメンバである 1990 のすべての子孫を取得します (つまり、四半期レベルのメンバを返します)。1990 も返されます。