【发布时间】:2014-02-19 07:44:21
【问题描述】:
这是我的第一个问题,希望一切顺利!
我所做的是使用 MSSMS 的用户定义(表值)函数,其中有一点,我必须根据函数参数 @Year 查找记录。
当记录超过两年时出现问题,那么它应该列出所有超过两年的记录。我一直在用这个把头撞到墙上,这就是我到目前为止的目标:
WHERE (
@Year = YEAR(GETDATE()) AND YEAR(E.ExampleColumnDate) = @Year
OR
@Year = YEAR(GETDATE())-1 AND YEAR(E.ExampleColumnDate) = @Year
OR
@Year = YEAR(GETDATE())-2 AND YEAR(E.ExampleColumnDate) = @Year
OR
@Year <= YEAR(GETDATE())-3 AND YEAR(E.ExampleColumnDate) < @Year
)
【问题讨论】:
-
那么,是什么问题?你得到不正确的结果吗?错误信息?感觉它应该看起来“更干净”?
-
哦,是的。如果年份超过两年,则此代码不会返回任何内容。
-
好吧,您在上次测试中的
<=和<不匹配 - 那么您给出的输入@Year值是什么,您是否有来自多年的数据 之前那个?也许如果您可以添加一些示例数据、@Year输入值和预期结果,我们可以提供帮助。 -
哦,我实际上发现我正在努力解决的不是我的代码,而是实际数据是错误的。但感谢您快速回复达米安。尽可能关闭这个问题..
标签: sql-server tsql where-clause conditional-operator