0

我想返回当月和当年的所有申请日期。这一定很简单,但是我想不通。我知道当月有 2 个日期,当年有 90 个日期。右,左,外,内我都试过了,只是把代码扔在墙上,想看看什么会粘住,但都不起作用。我要么两列得到 2,要么两列得到 180。这是我最新的选择声明。

SELECT count(a.evdtApplication) AS monthApplicationEntered,  
       count (b.evdtApplication) AS yearApplicationEntered
FROM tblEventDates a 
RIGHT OUTER JOIN tblEventDates b ON a.LOANid = b.loanid 
WHERE datediff(mm,a.evdtApplication,getdate()) = 0 
      AND datediff(yy,a.evdtApplication, getdate()) = 0 
      AND datediff(yy,b.evdtApplication,getdate()) = 0 
4

1 回答 1

6

您根本不需要任何连接。

您想计算 tblEventDates 中的 loanID 列,并且您想根据与当前月份或当年匹配的日期有条件地进行计算。

所以:

SELECT SUM( CASE WHEN Month(a.evdtApplication) = MONTH(GEtDate() THEN 1 END) as monthTotal,
        count(*)
FROM tblEventDates a
WHERE a.evdtApplication BETWEEN '2008-01-01' AND '2008-12-31'

这样做是选择今年的所有活动日期,并将符合您条件的日期相加。如果它与当前月份不匹配,则不会加 1。实际上,甚至不需要为年份做条件,因为您只是查询该年份的所有内容。

于 2008-10-01T21:59:02.607 回答