我从MS SQL数据库中的4个不同表中选择信息。我已将信息过滤到我现在需要的位置,只选择当前星期一最接近GETDATE()
日期的最新表格。
例如,假设我现在提取这些信息:
Date | StockCode
----------------+----------
18/08/2014 | ABC123
11/08/2014 | 321CBA
04/08/2014 | 321CBA
28/07/2014 | ABC123
11/08/2014 | ABC123
28/07/2014 | TEST123
我需要对其进行过滤以显示此结果:
Date | StockCode
----------------+----------
18/08/2014 | ABC123
11/08/2014 | 321CBA
28/07/2014 | TEST123
感谢您的帮助!非常感激。
答案 0 :(得分:1)
你可以做到
declare @Monday datetime= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
Select StockCode,aa.Date
From TableName Main
OUTER APPLY (Select top 1 Datefrom TableName t
where t.StockCode=Main.StockCode
order by DATEDIFF(d,Date,@Monday)) as aa
Group By StockCode,aa.Date
答案 1 :(得分:0)
答案取决于您希望查询返回的结果数量以及您认为的结果"关闭"到了约会。
如果你想找到所需日期之前和之后最接近的5个日期(在本例中是当周的星期一),那么这将有效:
SELECT TOP 5
Date,
StockCode
FROM Table
Order by abs(datediff("d", Date, DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))