InterSystemsCaché:如何计算表中列表中值的遭遇? [关闭]

问题描述 投票:0回答:1

我对Caché很新,并被要求计算表中列表中值的遭遇。例如,表格如下所示:

id | values
-------------------
1  | {1, 2}
2  | {1, 3, 4, 4, 5}
3  | {1, 2, 5}
4  | {1, 2, 2, 4, 5}
5  | {2, 1, 4}

类定义

Class Object.Test Extends %Persistent
{
  Property values As list of %Integer
}

该表的输出必须如下所示:

value | count
--------------
 1    |   5
 2    |   5
 3    |   1
 4    |   4
 5    |   3

但我不知道如何做到这一点

编辑添加了类定义

sql collections count intersystems-cache
1个回答
2
投票

假设您没有需要保存的数据。

  1. Project列出属性作为单独的表 Class Object.Test Extends %Persistent { Property values As list of %Integer(STORAGEDEFAULT="array", SQLPROJECTION = "table/column"); }
  2. 删除数据,存储定义并重新编译该类。
  3. 生成数据。
  4. 执行SQL查询 SELECT "values", count(*) AS "count" FROM Object.Test_values GROUP BY "values"
  5. (可选)添加并构建collection索引。

笔记。

这是SQL的方式。你也可以这样做:

  • 对象方式(迭代对象及其属性)
  • 全局方式(迭代全局和此属性值)

Caché commmunity forum

© www.soinside.com 2019 - 2024. All rights reserved.