sql - 如何在当年返回下一年的值,但在切换到下一年时保持当前值?成为当年
问题描述
我有一个运行用户选择某个月份的视图。它根据月份选择返回各种值。使用 MS SQL 服务器
问题:它根据月份返回这些值,并且在用户选择一月份之前它应该正常工作。When January is chosen, it brings back both this current year (which has already passed) and this upcoming January (January 2020. Which is what they want). 如何在选择明年时删除 2019 年的值,但在年份更改为下一年时仍保留它们?
这是查询
SELECT distinct
RRP.Id, RRP.UniqClient, RRP.Client, RRP.Expiring_Policies, RRP.UniqBroker,
CONVERT(varchar, RRP.ExpDate, 101) AS ExpDate, RRP.NewUw, RRP.OtherContact,
RRP.Company, RRP.Broker_Name, RRP.Reviewed, RRP.DateCreated, RRP.DateUpdated,
RRP.EmailCreated, RRP.UniqProducer, RRP.LINES,
CASE WHEN MMS.UniqMarketingSubmission IS NULL THEN 'No' ELSE 'Yes' END AS [MMS Created]
FROM dbo.Reviewed_Renewal_Policy AS RRP LEFT OUTER JOIN
GREEN43_PROD_REPL.dbo.MarketingSubmission AS MMS ON RRP.UniqClient = MMS.UniqEntity AND RRP.ExpDate = MMS.EffectiveDate
where (RRP.Reviewed = 'No') AND (DATENAME(month, RRP.ExpDate) = DATENAME(MONTH, DATEADD(Month, 3, GETDATE())))
order by ExpDate ASC
通常有一个 .NET webforms 变量代替 DATEADD 中的 3,但 3 在 SQL 中工作,为了清楚起见我保留了它
我尝试过比较当前日期并添加一年,但到目前为止没有成功。再次感谢你的帮助。
解决方案
如果您想要未来三个月的价值,我建议:
where RRP.Reviewed = 'No' and
RRP.ExpDate >= datefromparts(year(dateadd(month, 3, getdate()),
month(dateadd(month, 3, getdate()),
1) and
RRP.ExpDate < datefromparts(year(dateadd(month, 4, getdate()),
month(dateadd(month, 4, getdate()),
1)
(Reviewed, ExpDate)
注意:这是构造的,因此它可以在or上使用索引(ExpDate)
。
推荐阅读
- git - 将 git mingw64 安装与 mingw-w64 安装合并
- javascript - 如何用不同的值和基于对象属性的条件填充数组?
- python - Visual Studio Coderunner 扩展不起作用。单击运行时没有任何反应
- c# - 在 C# 中寻找角度时无法得到正确答案
- ansible - 抑制 Ansible 中的断言输出
- azure - Azure 功能:在证书中找不到具有此指纹的证书
- nginx - nginx 转发代理配置导致“连接上游时上游服务器暂时禁用”错误
- python - 尝试使用 selenium 添加扩展名和登录,但在一次登录后发现验证码我不知道为什么
- javascript - 没有 var、let 或 const 的 JavaScript 内部 lambda 函数
- rabbitmq - Openshift 路由 AMQP 直通