使用SQL';更新'';设置'';和';在R
我写了一个查询,用于提取个人客户帐户和购买。在执行查询并研究数据之后,我注意到一些具有相同产品类别的单独帐户显示不同的帐户打开日期。我需要更新生成的查询表,以将具有相同产品类别的各个帐户设置为原始开户日期或最早的开户日期(最小日期)。例如:使用SQL';更新'';设置'';和';在R,sql,r,sql-update,Sql,R,Sql Update,我写了一个查询,用于提取个人客户帐户和购买。在执行查询并研究数据之后,我注意到一些具有相同产品类别的单独帐户显示不同的帐户打开日期。我需要更新生成的查询表,以将具有相同产品类别的各个帐户设置为原始开户日期或最早的开户日期(最小日期)。例如: Account# Product.Cat Open.Date 15672 D 08/14/2015 15672 D 08/14/2015 15672 D
Account# Product.Cat Open.Date
15672 D 08/14/2015
15672 D 08/14/2015
15672 D 03/14/2016
在本例中,我需要更新表格,以便第三行的Open.Date等于最早的Open日期,即2015年8月14日
根据我的研究,我最初认为如果这些条目的日期不等于最早的开放日期,我必须删除这些条目,但我现在相信我可以使用UPDATE、SET、WHERE和and语句的组合。我的问题是,这个查询是用R编写的,当我运行查询时,它不会产生任何结果,也不会给我一个错误语句。下面是我的代码,直到您看到我的代码工作的间隙和更新函数为止
q1<- sqlQuery(ch,paste("SELECT
lic.t_b_z_act__AC_NAME,
lic.t_b_z_act_AC_ACCT_NBR,
lic.t_b_z_act_A_PROD_CAT,
lic.t_b_z_act_A_PROD_TYP,
lic.t_b_z_act_A_OPEN_DTE,
lic.t_b_z_act_PRCS_DTE,
lic.t_b_x_bal_BL_ACCT_NBR,
lic.t_b_x_bal_PRCS_DTE,
lic.t_b_x_bal_BL_BAL
FROM lic.t_b_z_act
Left JOIN lic.t_b_x_bal
ON lic.t_b_x_bal_BL_ACCT_NBR = lic.t_b_z_act_AC_ACCT_NBR and lic.t_b_x_bal_PRCS_DTE = lic.t_b_z_act_PRCS_DTE
WHERE AC_Dep_CAT<>'K'AND AC_Dep_CAT<>'C' AND AC_OPEN_DTE>'2014-10-30'
UPDATE t_b_a_act
SET AC_Open_DTE = MIN(AC_OPEN_DTE)
WHERE AC_NAME = AC_NAME AND AC_PROD_CAT=AC_PROD_CAT AND AC_OPEN_DTE>MIN(AC_OPEN_DTE);
"))
q1使用数据表
样本数据
dt <- fread("Account# Product.Cat Open.Date
15672 D 08/14/2015
15672 D 08/14/2015
15672 D 03/14/2016")
输出
Account# Product.Cat Open.Date
1: 15672 D 03/14/2016
2: 15672 D 03/14/2016
3: 15672 D 03/14/2016
这实际上不起作用,因为它不考虑不同的帐户。在示例数据中实际上没有不同的帐户。但是如果有,您可以将它们添加到分组的by=
-参数中。
Account# Product.Cat Open.Date
1: 15672 D 03/14/2016
2: 15672 D 03/14/2016
3: 15672 D 03/14/2016