我有这个简单的(测试)表:
namee
是工人姓名salaryStep
是代表新加薪日期的日期。
我需要找到我目前处于哪一步。(基于给定日期)
例如,如果给定的日期是,2013 nov 11
那么我应该在id=2
。
所以逻辑很简单:
1)通过排序表salarystep DESC
2)从中,取第一个较小的项目@now
但是当我通过
DECLARE @now date = '20131111'
SELECT TOP 1 salaryStep
FROM (
SELECT TOP 100 PERCENT
salaryStep
FROM [aaa].[dbo].[Table_1]
ORDER BY
salaryStep DESC
) a
WHERE a.salaryStep<=@now
答案是:
2013-10-02
--不正确
所以我问:
问题 #1
似乎虽然我在内部 select: 中指定了 order by salaryStep DESC
,但枚举确实以该顺序开始。这是为什么 ?
问题2
正确的做法是什么?
要求的结果:
2013-10-15
(或 id=2 ,没关系)