sql语句如何查找在一段时间内没有交易记录的用户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句如何查找在一段时间内没有交易记录的用户相关的知识,希望对你有一定的参考价值。
有两张表,一张是交易记录的,一张是用户信息的。如何能导出比如最近一年内没有交易记录的用户信息。
SELECT userid, tel, address
FROM tab_userinfo
WHERE IN
(SELECT userid
FROM tab_buylist
WHERE chargedate < '2014-01-01')
这样写我知道不对,谁能告诉我下应该怎么写
FROM tab_userinfo t1
WHERE
not exists
(SELECT 1
FROM tab_buylist
WHERE chargedate >dateadd(year,-1,getdate() and userid=t1.userid) 参考技术B SELECT userid, tel, address
FROM tab_userinfo
WHERE userid IN
(SELECT userid
FROM tab_buylist
WHERE chargedate < '2014-01-01')追问
这样查出来的id应该不是唯一的吧
追答是不是唯一你都没执行一下看看么?跟我一样用猜的?
那么括号内修改下,这次肯定唯一,就算之前也是唯一的,修改后也能提高执行速度(SELECT distinct userid
FROM tab_buylist
WHERE chargedate < '2014-01-01')
[权限相关]在PeopleSoft中查找可以使用DataMover的用户
DataMover是一个功能非常强大的工具,它的访问权限应该被控制,特别是在PRD环境中。在每个公司,许多用户可能在一段时间内切换部门,角色和职责,所以每隔一段时间就应该检查这些用户的权限,以确认他们没有任何不需要访问的权限。
下面一些sql语句可以帮助理解与检查拥有DateMover权限的用户。
SQL1:该SQL可以查询出能够使用DataMover的用户列表。
SELECT DISTINCT ROLEUSER
FROM PSROLEUSER A
WHERE A.ROLENAME IN
(SELECT DISTINCT ROLENAME
FROM PSROLECLASS A, PSAUTHITEM B
WHERE A.CLASSID IN (SELECT DISTINCT CLASSID
FROM psauthitem
WHERE MENUNAME = \'DATA_MOVER\'));
应该仔细检查这个列表并删除任何不需要DataMover权限的用户。
一旦找到可以使用DataMover的用户,你可能需要列出来哪些角色和许可权列表拥有DataMover权限,然后相应的来修改这些角色和许可权列表。
SQL2:下面SQL提供了角色列表以及许可权列表是允许DataMover访问的权限。
SELECT ROLENAME, CLASSID
FROM PSROLECLASS
WHERE ROLENAME IN (SELECT DISTINCT ROLENAME
FROM PSROLEUSER A
WHERE A.ROLENAME IN
(SELECT DISTINCT ROLENAME
FROM PSROLECLASS A, PSAUTHITEM B
WHERE A.CLASSID IN
(SELECT DISTINCT CLASSID
FROM psauthitem
WHERE MENUNAME = \'DATA_MOVER\'))
/*AND A.ROLEUSER = \'OPRID\'*/)
AND CLASSID IN
(SELECT CLASSID FROM PSAUTHITEM WHERE MENUNAME = \'DATA_MOVER\');
检查列出来的结果并相应的修改权限,该SQL同样可以查询出拥有Application Designer权限(Menu name:APPLICATION_DESIGNER)等其他权限。
想要了解更多可以关注微信公众号“萧闹闹”
如果感到对您有帮助没准儿你就会赞赏,iOS 专用赞赏通道:
以上是关于sql语句如何查找在一段时间内没有交易记录的用户的主要内容,如果未能解决你的问题,请参考以下文章