【问题标题】:How to count number of unique records of a field in progress openedge 4gl?如何计算正在进行的字段的唯一记录数openge 4gl?
【发布时间】:2016-11-26 21:08:31
【问题描述】:

我有一个字段年龄的客户表。我如何计算有多少不同的年龄?

【问题讨论】:

  • 你能告诉我更多细节吗?
  • 在年龄字段下,假设它的值是 23,24,23,24,25。如此不同的年龄是 23,24 和 25 ,所以 count = 3 。

标签: field progress-4gl openedge


【解决方案1】:

您可以在 ABL 中使用 FOR 循环和 BREAK BY 以及计数器来执行此操作。 ABL 中也有内置的聚合函数(ACCUM),但它们在野外很少见......

DEFINE VARIABLE i AS INTEGER     NO-UNDO.

FOR EACH record NO-LOCK BREAK BY record.age:
    IF LAST-OF(record.age) THEN DO:
        i = i + 1.
    END.
END.
MESSAGE "There are " i " unique ages" VIEW-AS ALERT-BOX.

或者通过残缺的内置 SQL:

SELECT COUNT(DISTINCT age) FROM record.

【讨论】:

  • 这给了我每个不同记录的计数 23- 2 24-2 25-1 ,我需要获取不同记录的计数,即 (23,24,25) = 3
  • 嗨,如果我有两个字段,field1 field2 的数据 a x a y b z c x c x d y c y a z 如何根据 field1 计算 field2 的数据出现次数,例如 x 对 a 重复了多少次,y 对 a 重复了多少次, z 代表 a ,依此类推 b
  • 您可以使用 BREAK BY field1 BY field2 和 FIRST-OF(field1) 或 FIRST-OF(field2) 或组合。您需要阅读基本的 FOR 语句。
【解决方案2】:

它会有点像以下几行: 在以下代码中,将 City 替换为年龄,将员工替换为客户。

def var i as int no-undo.

for each employee break by city:
   if first-of (city) and  last-of(city)
   then do:

      i = i + 1.
   end.
end.

用帧 a 显示“唯一记录的计数”i。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2016-07-23
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2016-07-26
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多