以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何取最后日期?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188750)

--  作者:lin98
--  发布时间:2023/10/16 11:19:00
--  如何取最后日期?
表A:  料号、日期
        F1     2023-5-3
       F1      2023-6-30
       F2      2023-03-20
       F2      2023-9-30

效果如下
表B:料号、最后日期
      F1      2023-6-30
     F2      2023-9-30

问题一:表B如何实现取表A指定料号的最后日期?
问题二:如果表A的数量大,上百万条记录,用这种方法会不会影响效率?

--  作者:有点蓝
--  发布时间:2023/10/16 11:25:00
--  
使用sql。比如
insert into 表B(料号,最后日期) selec料号,max(日期) from 表A group by 料号

--  作者:淡月斜阳
--  发布时间:2023/10/16 11:32:00
--  
表A与表B间,建立关联,父表:表B,子表:表A。关联字段:料号。
表B最后日期,用表达式列,引用子表数据,MAX(MAX(Child(关联).日期))

这要求对应的表A子数据,都要加载过来,百万条记录,肯定会严重影响效率。

可采用,表B如果是仅统计,不填写,直接用sql语句生成就好了

如果需要填写,可以在表A添加新记录后,同步UPDATE更新表B的最后日期,如果这个最后日期经常会用到,这显然更有利于效率


--  作者:lin98
--  发布时间:2023/10/17 13:45:00
--  

UPDATE {表BB}, {表AA} Set {表BB}.最后日期 = {表AA}.日期(max(日期)) Where {表BB}.[料号] = {表AA}.[料号]



[此贴子已经被作者于2023/10/17 16:55:52编辑过]

--  作者:有点蓝
--  发布时间:2023/10/17 13:53:00
--  
UPDATE {表BB} as b Set b.最后日期 = a.日期 from (select 料号,max(日期) as 日期 from {表AA} group by 料号) as a Where a.[料号] = b.[料号]
--  作者:lin98
--  发布时间:2023/10/17 14:50:00
--  
语法错误 (操作符丢失) 在查询表达式 \'a.日期 From (Select 料号, max(日期) As 日期 From [表AA] Group By 料号) As a\' 中。
--  作者:有点蓝
--  发布时间:2023/10/17 15:00:00
--  
什么数据库?
--  作者:lin98
--  发布时间:2023/10/17 15:06:00
--  
ACCESS
--  作者:有点蓝
--  发布时间:2023/10/17 15:11:00
--  
UPDATE {表BB} as b , (select 料号,max(日期) as 日期 from {表AA} group by 料号) as a Set b.最后日期 = a.日期 Where a.[料号] = b.[料号]
--  作者:lin98
--  发布时间:2023/10/17 15:51:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
操作必须使用一个可更新的查询。