我有,我输入产品(SlobID),这是获取产品的最新版本
SELECT TemplateID, SlobID, FromYear, ToYear, MAX(ValidFrom) AS CurrentDate
FROM CommissionsPerTemplate AS CommissionsPerTemplate_1
GROUP BY TemplateID, SlobID, FromYear, ToYear
HAVING (MAX(ValidFrom) <= GETDATE()) AND (TemplateID = 2) AND (SlobID = 743)
结果我得到的是
TemplateID SlobID (From Year) (To year) Valid date
2 743 1 1 2016-01-01
2 743 1 99 2015-01-01
2 743 2 99 2016-01-01
困难的部分是数据表我们需要查询才能获取此产品的最新版本。 第1版(1/1/2015)如果从一年= 1到一年= 99 但在(2016年1月1日),这创造了第二个版本分路器年 从今年1至1和第2年至99。
所以对我来说正确的结果应该是以下
TemplateID SlobID (From Year) (To year) Valid date
2 743 1 1 2016-01-01
2 743 2 99 2016-01-01
,但我对如何让这个不知道。 也许在2017年1月1日,新版本应该有逐年= 1到一年= 10,从年= 11年= 99或别的东西。
我没有看到任何*非常高级*在这里。 – Parfait
我建议增加一个where子句 –
所以,你只是想摆脱1-99记录?为什么?如果2-99的记录真的是3-99呢?然后你错过了2-2的跨度。那么1-99记录是否需要减少到一个具有“2015-01-01”日期的2-2? –