Sql 如果账户在另一个账户的60天内开立,则计算
我试图计算是否有会员在加入我们后60天内打开了产品。根据我目前拥有的代码,我显示没有人打开过产品,我知道这是不正确的,所以我一定是做错了什么。有什么想法吗Sql 如果账户在另一个账户的60天内开立,则计算,sql,sql-server,Sql,Sql Server,我试图计算是否有会员在加入我们后60天内打开了产品。根据我目前拥有的代码,我显示没有人打开过产品,我知道这是不正确的,所以我一定是做错了什么。有什么想法吗 SELECT M.MEMBER_NBR, COUNT(CASE WHEN S.OPEN_DATE <= DATEADD(d, -60, l.open_date) THEN 1 ELSE NULL END) FROM LOAN AS L INNER JOIN APPLICATION AS A ON L.LOAN_NOTE_NBR = A
SELECT M.MEMBER_NBR, COUNT(CASE WHEN S.OPEN_DATE <= DATEADD(d, -60, l.open_date) THEN 1 ELSE NULL END)
FROM LOAN AS L
INNER JOIN APPLICATION AS A ON L.LOAN_NOTE_NBR = A.APLNUM
INNER JOIN MEMBERSHIP AS M ON L.MEMBER_NBR=M.MEMBER_NBR
INNER JOIN SHARE AS S on M.MEMBER_NBR=S.MEMBER_NBR
WHERE l.open_date = M.open_date
GROUP BY M.MEMBER_NBR
ORDER BY COUNT(CASE WHEN S.OPEN_DATE <= DATEADD(d, -60, l.open_date) THEN 1 ELSE NULL END) DESC
所以在上面的例子中,他们在签署贷款后两周开了一个支票账户。所以对于输出,我希望它能显示出来
Member_Nbr Open_ShareCount
1 1
或者,如果他们开了一张支票和一张储蓄卡,就会说在Open_ShareCount下有2张,对数据的外观做了一些假设,并忽略了这个答案的应用程序表和成员表。根据需要进行调整 这是我使用的样本数据。。。 绿色高亮显示的行是不会出现在结果中的行,因为日期超出范围 询问
select member_number,
count(distinct share) as accounts_opened
from (
select s.member_number
,s.share
--,s.open_date as share_open --kept for QA
--,l.open_date as loan_open --kept for QA
from share s
join loan l on l.member_number = s.member_number
where 1=1
and s.open_date between l.open_date
and l.open_date + '1 day'::interval * 60
)z
group by 1
order by 1
请提供样本数据、所需结果,并根据这些信息解释您想要做什么。
datediff(day,l.open_date,s.open_date)介于0和60之间
select member_number,
count(distinct share) as accounts_opened
from (
select s.member_number
,s.share
--,s.open_date as share_open --kept for QA
--,l.open_date as loan_open --kept for QA
from share s
join loan l on l.member_number = s.member_number
where 1=1
and s.open_date between l.open_date
and l.open_date + '1 day'::interval * 60
)z
group by 1
order by 1