Abd*_*mun 2 sql t-sql database sql-server
我正在尝试列出表中每个代码的最新数量(MAX EffectiveDate时间避免Futuristic EffectiveDate)
Code Quantity EffectiveDate
1 2 1-Mar-2018
1 3 1-Apr-2018
1 3 1-May-2018
1 3 1-June-2018
2 5 1-Mar-2018
2 6 1-Apr-2018
3 7 1-Feb-2018
3 8 1-Mar-2018
3 5 1-Apr-2018
Run Code Online (Sandbox Code Playgroud)
期望的输出应该是:
Code Quantity EffectiveDate
1 3 1-May-2018
2 6 1-Apr-2018
3 5 1-Apr-2018
Run Code Online (Sandbox Code Playgroud)
我尝试使用MAX BY(DATE)的GROUP BY解决方案, 但它显示了未来数据.
要获得完整的行,您可以使用:
SELECT TOP 1 WITH TIES *
FROM table
WHERE EffectiveDate <= GETDATE()
ORDER BY ROW_NUMBER() OVER(PARTITION BY code ORDER BY EffectiveDate DESC);
Run Code Online (Sandbox Code Playgroud)
编辑:
如果一个代码组中的关系是可能的,那么您可以使用RANK:
SELECT TOP 1 WITH TIES *
FROM tab
WHERE EffectiveDate <= GETDATE()
ORDER BY RANK() OVER(PARTITION BY code ORDER BY EffectiveDate DESC);
Run Code Online (Sandbox Code Playgroud)