SQL查询逻辑

时间:2017-09-12 08:47:45

标签: sql sql-server

我有两张桌子

  

1)ActivityMaster

     

ActivityId,ActivityDesc,RegisteredDate

     

2)ApprovalConfig

     

ApprovalId,用户ID,ActivityId,ApprovalDate

两个表都有共同的ActivityId。

在ActivityMaster中注册任何活动后,它将在30天后重新发生

1)活动应在30天后显示给用户,并且在批准后不应出现,直到下一个批准日期到来(即30天)

我正在使用下面的查询逻辑,但它没有按预期工作。

Select 
case 

when

DateAdd(dd,DATEDIFF(MONTH, RegisteredDate,GETDATE()) *30,RegisteredDate) < (SELECT ISNULL(MAX(ApprovalDate),0) FROM ApprovalConfig C WHERE C.ActivityId= ActivityId)

then 0 -- Hide Approval Link
else 1 -- Show Approval Link
end As LinkShow

from ActivityMaster

E.g  用户在2017年1月5日注册活动,每隔30天就可以看到下一位用户进行审批。

1)2017年2月6日,2017年3月6日,下一位用户可以看到活动

2)一旦活动获得批准,它将不会显示在仪表板中 如果用户于2017年2月7日批准,则在下一个批准日期到2017年3月6日之前,活动将不可见

0 个答案:

没有答案