对不起混淆的标题。请告诉,如果可以通过数据库请求来完成。假设我们有如下表选择行数等于或低于给定值并且与其最接近的行
ind_id name value date
----------- -------------------- ----------- ----------
1 a 10 2010-01-01
1 a 20 2010-01-02
1 a 30 2010-01-03
2 b 10 2010-01-01
2 b 20 2010-01-02
2 b 30 2010-01-03
2 b 40 2010-01-04
3 c 10 2010-01-01
3 c 20 2010-01-02
3 c 30 2010-01-03
3 c 40 2010-01-04
3 c 50 2010-01-05
4 d 10 2010-01-05
我需要查询所有行,包括各ind_id
一次给定的日期,如果有针对给定的日期没有ind_id
,然后采取就近下日期,如果没有任何较低日期,然后用空值返回ind_id + name(名称/ ind_id对相等)。 例如,日期是2010-01-04,我希望下面的结果:
ind_id name value date
----------- -------------------- ----------- ----------
1 a 30 2010-01-03
2 b 40 2010-01-04
3 c 40 2010-01-04
4 d NULL NULL
如果有可能,我会很感激,如果有人帮我查询的建筑。我使用SQL Server 2008的
“名称/ ind_id对相等” - 这是否意味着对于给定的id,名称将始终是相同的?如果是这样,它表示数据库模式中的非规范化,除非基础数据来自多个表 - 显示的数据是来自单个表还是来自多个表? –
@Mark Bannister是的,我知道,这个表是另一个请求的结果:) –
好吧,所以它是从一个表 - 谢谢。 –