Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第1部 アプリケーション開発の基本> 第3章 データを検索する方法> 3.7 集計した結果を取り出す> 3.7.1 検索結果をグループ化する

3.7.1.1 文字列でグループ化する

XML文書中の任意の要素ノードまたはその要素ノードの属性ノードの値でグループ化を行うことができます。文字列でグループ化を行う場合は、ソート式のキー指定にテキスト式または属性式を指定します。

例として以下の文書があるものとします。

文書A

<doc>
  <employee eno="19980120" position="general manager">
    :
    <name>鈴木太郎</name>
    :
  </employee>
    :
  <detail>
    :
    <destination area="愛知県名古屋市千種区覚王山">愛知支店</destination>
    :
  </detail>
    :
</doc>

文書B

<doc>
  <employee eno="19980120" position="general manager">
    :
    <name>鈴木太郎</name>
    :
  </employee>
    :
  <detail>
    :
    <destination area="東京都千代田区八重洲">東京支店</destination>
    :
  </detail>
    :
</doc>

文書C

<doc>
  <employee eno="20012111" position="manager">
    :
    <name>佐藤花子</name>
    :
  </employee>
    :
  <detail>
    :
    <destination area="東京都千代田区八重洲">東京支店</destination>
    :
  </detail>
    :
</doc>

文書D

<doc>
  <employee eno="20012111" position="manager">
    :
    <name>佐藤花子</name>
    :
  </employee>
    :
  <detail>
    :
    <destination area="愛知県名古屋市千種区今池">愛知支社 </destination>
    :
  </detail>
    :
</doc>

例1

従業員氏名(name)でグループ化します
/doc/employee/name/text() 

結果:文書AとBが1つのグループ、文書CとDが1つのグループとして扱われます。

例2

地位(position)でグループ化します。
/doc/employee/@position

結果:文書AとBが1つのグループ、文書CとDが1つのグループとして扱われます。

文字列でグループ化を行う場合、文字列の先頭20バイトをキーにしてグループ化します。キー指定が示すXML文書中の値が20バイトよりも大きくなる可能性がある場合は、20バイト目以降が異なる文字列であるのに同一グループとみなされることがあります。このような場合は、キー指定にrlen関数を指定して、先頭から何文字をキーとするかを指定できます。
rlen関数の詳細については、“B.2.4 単一行関数指定”を参照してください。

例3

出張エリア(area)でグループ化したい場合
rlen(/doc/detail/destination/@area,30) 

上記のように指定すると、出張エリアの先頭から30文字でグループ化します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006