首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用SQL 'UPDATE‘、'SET’、'AND‘

在R中使用SQL 'UPDATE‘、'SET’、'AND‘
EN

Stack Overflow用户
提问于 2019-09-18 23:15:14
回答 1查看 48关注 0票数 0

我已经写了一个查询,拉取个人客户帐户和购买。在执行查询并研究数据之后,我注意到一些具有相同产品类别的个人帐户显示不同的开户日期。我需要更新我生成的查询表,以将具有相同产品类别的单个帐户设置为原始开户日期或最早开户日期(最小日期)。举个例子:

代码语言:javascript
复制
Account#   Product.Cat    Open.Date 
15672       D             08/14/2015
15672       D             08/14/2015
15672       D             03/14/2016

在本例中,我需要更新表,以便第三行的Open.Date等于最早的打开日期,即2015年8月14日。

根据我的研究,我最初认为如果这些条目的日期不等于最早的打开日期,我将不得不删除它们,但现在我相信我可以使用UPDATE、SET、WHERE和and语句的组合。我的问题是这个查询是用R编写的,当我运行我的查询时,它不会产生任何结果,也不会给我一个错误语句。我的代码如下所示,直到您看到差距和更新函数时,我的代码才能正常工作。

代码语言:javascript
复制
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);

          "))
EN

回答 1

Stack Overflow用户

发布于 2019-09-18 23:37:14

使用data.table

示例数据

代码语言:javascript
复制
dt <- fread("Account#   Product.Cat    Open.Date 
15672       D             08/14/2015
15672       D             08/14/2015
15672       D             03/14/2016")

代码

代码语言:javascript
复制
#set keys for sorting    
setkey(dt, Product.Cat, Open.Date)
#set Open.Date by reference to the first Open.Date of each group
#whch is the earliest, because it is sorted by keys
dt[, Open.Date := Open.Date[1], by = .(Product.Cat)][]

输出

代码语言:javascript
复制
   Account# Product.Cat  Open.Date
1:    15672           D 03/14/2016
2:    15672           D 03/14/2016
3:    15672           D 03/14/2016
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57996037

复制
相关文章

相似问题

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