首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >进度4gl :计数记录?

进度4gl :计数记录?
EN

Stack Overflow用户
提问于 2014-10-12 12:16:48
回答 1查看 5.2K关注 0票数 1

我是新来的进步4gl。我有一个查询,在这里,我必须计算特定客户的销售订单数量。

我有桌子,因为so_mstr和so_cust是我的客户名称字段,so_nbr是我的销售订单号字段。

在SQL中我尝试过这样做,

代码语言:javascript
代码运行次数:0
运行
复制
select so_cust,count(distinct so_nbr) from so_mstr group by so_cust.

请在进行中帮助我。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-12 12:50:36

规则1 --进度是而不是 SQL。在4gl中尝试使用SQL的过程中,除了痛苦和痛苦之外,什么都没有。

4gl确实支持一些有限的SQL-89语法,例如:

代码语言:javascript
代码运行次数:0
运行
复制
select count(*) from customer.

但这是很久以前就放在产品中的,实际上只是为了满足90年代初面向清单的产品评估。有时,它对于临时查询中的快速攻击是有用的,但对于严肃的使用却不是很有用。“这是一个很好的演示”。通过SQL-92接口支持真正的SQL。它是一个独立于4gl的产品,通常用于支持报表工具,如水晶报告或其他什么。

如果每个订单有一个"so_mstr“,并且您需要知道每个客户的订单数量,那么计算这些记录的简单的4gl方法是:

代码语言:javascript
代码运行次数:0
运行
复制
define variable i as integer no-undo.

for each so_mstr no-lock where so_mstr.so_domain = "xxx" break by so_mstr.so_cust:
  i = i + 1.
  if last-of( so_mstr.so_cust ) then
    do:
      display so_mstr.so_cust i.
      i = 0.
    end.
end.

您的代码试图做一些“不同”的事情,所以我关于每个客户的销售订单号码的唯一性的假设可能是错误的(但对于某些人来说,这似乎是一个非常糟糕的设计)。

对于每一个涉及中断组和自动计数函数,您可以做更复杂的事情,但是这些选项并不是更快,而且IMHO,它们的可读性更低。特别是对于刚开始使用4gl的人。

(就性能而言,您也可以使用“字段列表”,但是只有当连接通过WAN而不是通过共享内存进行连接时才真正重要,这会使语法复杂化。我不想做一个简单的例子。)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26325020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档