【问题标题】:FoxPro 6.0 - adding rows in a Select queryFoxPro 6.0 - 在 Select 查询中添加行
【发布时间】:2017-06-14 13:16:09
【问题描述】:

我在一个 dbf 文件中有代表每月一个的行,其中月份从 -250 到 +600。在每一行中都有一个名为 t_from 的变量表示月份。我想将 -150 个月的行添加到 0。我该怎么做?是否可以在 Select 语句中执行此操作,还是我需要更多内容?我已经在“分组依据”语句中按多个变量进行分组。

样本数据,简化为仅显示一个分组变量:

Bus_LINE    t_from
--------    -------
ABC         -250
ABC         -249
ABC         ...
ABC         +599
ABC         +600
ZXC         -250
ZXC         -249
ZXC         ...
ZXC         +599
ZXC         +600
...
etc

【问题讨论】:

  • 范围 -250 到 +600 已经包括范围 -150 到 0。你到底在问什么?您是说您在“group by”语句中进行分组,但我们没有看到任何代码。请清楚地解释你的问题。有“插入...选择...”但您的问题无法理解。
  • 我并没有真正关注问题,但似乎带有插入或追加的 for 循环会起作用。
  • 抱歉,不清楚。后来我自己解决了。我将在下面发布解决方案(也许问题会变得清晰!)非常感谢,乔。

标签: sql visual-foxpro foxpro


【解决方案1】:
    **** Assign variables to the input files ****
moses_output_file = output_path + "\CORP_DECEMBER2016~main9~CORP_REPORT.dbf"
SELECT 0
Use (moses_output_file) ALIAS cube_output1

**** Split the group string, only take values between months -150 and 0 ****
SELECT  2 AS t_month, padr(strextract(group,"|","|",4,1),10) AS reinsurance_book, padr(strextract(group,"|","|",5,1),10) AS Scheme, SUM(ms_fix_pay) AS mortswap_fixedleg_payment, SUM(premium_re) AS prem_reins, SUM(fixleg_res) AS quasi_fix_leg_reserve, SUM(fl_res_int) AS quasi_fix_leg_reserve_int, SUM(rfee_if) AS reinsfee_if, SUM(re_ben_res) AS reins_ben_res_if;
    FROM cube_output1;
        WHERE t_from >= -150 AND t_from <= 0;
    INTO CURSOR temp1 READWRITE;
    group by t_month, reinsurance_book, Scheme;

**** Split the group string, only take values for months 0 and 1 ****
SELECT  t_from AS t_month, padr(strextract(group,"|","|",4,1),10) AS reinsurance_book, padr(strextract(group,"|","|",5,1),10) AS Scheme, SUM(ms_fix_pay) AS mortswap_fixedleg_payment, SUM(premium_re) AS prem_reins, SUM(fixleg_res) AS quasi_fix_leg_reserve, SUM(fl_res_int) AS quasi_fix_leg_reserve_int, SUM(rfee_if) AS reinsfee_if, SUM(re_ben_res) AS reins_ben_res_if;
    FROM cube_output1;
        WHERE t_from = 0 OR t_from = 1;
    INTO CURSOR temp2 READWRITE;
    group by t_month, reinsurance_book, Scheme;

SELECT * FROM temp1;
     UNION;
SELECT * FROM temp2;
     INTO CURSOR temp3 READWRITE;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2016-01-19
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多