如何根据模板筛选LASTMODIFIEDDATE?

现我的数据库中存储了系统中所有发放的调研问卷的调研结果,需求是:我想根据每个调研模板来查看下每个调研模板客户里面,最后的填写日期是多少。

但是现在数据库中有两张表,一个是模板内容表,另一张是客户填写情况表。如果需要by模板来查看最后填写时间的话,需要join两张表,来实现联表查询。

理论上这样的思路是正确的,但是这样做会有一个弊端,那就是将所有用户的填写记录都展示出来,这样你去查看每个模板的最后填写时间的话,你还得手动去filter一下,非常的麻烦。

因此这种方法是非常不经济的,虽然从结果上可以达到你的目的。

查阅了网上相关的文档之后,我经过尝试,找到了一种高效又经济的代码实现方法,那就是通过ROW_NUMER() Over()函数来实现,代码如下:

......

ROW_NUMBER() Over (partition by World's shortest URL shortener order by st.LASTMODIFIEDDATE desc) rn

......

where rn=1;

......

完整的Oracle SQL代码如下:

select

*

from

(SELECT

World's shortest URL shortener,

s.NAME as 问卷名,

t.SA_BUSINESS_UNIT__C as BU,

p.NAME as 产品,

s.EXPIRED_VOD__C as 是否过期,

t.DESCRIPTION as PTGROUP,

to_char(st.LASTMODIFIEDDATE+08/24,'YY-MM-DD') as 最近填写时间,

to_char(s.CREATEDDATE+08/24,'yy-mm-dd') as 问卷模板创建时间,

s.STATUS_VOD__C as 问卷模板发布状态,

to_char(s.START_DATE_VOD__C+08/24,'YY-MM-DD') as 问卷模板生效时间,

to_char(s.END_DATE_VOD__C+08/24,'YY-MM-DD') as 问卷模板失效时间,

s.ASSIGNMENT_TYPE_VOD__C,

to_char(s.LASTMODIFIEDDATE+08/24,'YY-MM-DD') as 问卷模板最近更新,

ROW_NUMBER() Over (partition by World's shortest URL shortener order by st.LASTMODIFIEDDATE desc) rn

FROM VDS_VDS.SF_SURVEY_TARGET_VOD__C st

left join VDS_VDS.SF_PRODUCT_VOD__C p on st.PRODUCT_VOD__C = P.ID | Truly Identity

left join VDS_VDS.SF_USER u on st.CREATEDBYID = U.ID

left join VDS_VDS.SF_USERTERRITORY ut on u.id=ut.USERID

left join VDS_VDS.SF_TERRITORY t on t.ID = ut.TERRITORYID

left join VDS_VDS.SF_SURVEY_VOD__C s on st.SURVEY_VOD__C = World's shortest URL shortener

left join VDS_VDS.SF_ACCOUNT a on st.ACCOUNT_VOD__C = a.ID

where

st.STATUS_VOD__C='Submitted_vod'

and s.STATUS_VOD__C='Published_vod'

and st.COACH_VOD__C is null

and t.SA_BUSINESS_UNIT__C is not null

and t.DESCRIPTION is not null

)

where rn=1;

通过这种方式导出来以后,可以看到excel sheet里呈现的是唯一的模板名称,对应的是最晚填写时间。

效果达成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的小辣条

您的打赏将是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值