当前位置: 代码迷 >> Sql Server >> 回到按日期计算最近的同类型一笔数据不同类型的所有数据
  详细解决方案

回到按日期计算最近的同类型一笔数据不同类型的所有数据

热度:54   发布时间:2016-04-24 09:07:18.0
返回按日期计算最近的同类型一笔数据不同类型的所有数据
一个产品配置参数的表,因为有可能同一种产品在生产一段时间后,参数需要变更,则在数据库里用建档日期来区分;
在生产报表 的时候,指定日期跟建档日期对比,调用跟指定日期最近一笔设置的参数来使用,如果超过指定日期则不使用,只调用比指定最近的参数, 
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 建档日期
1 5.06 J601螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 430 2012-12-12
2 5.07 J602螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 433 2012-12-12
3 5.07 J602螺丝-JT 0.21 2.6 44.5 "319
" 0.2326 0.013 1367 745 0.1815 42.6 0.43 431 2014-04-01
4 5.07 J602螺丝-JT 0.21 2.6 44.5 "319
" 0.2326 0.013 1367 745 0.1815 42.6 0.43 431 2014-12-12
5 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2012-12-12
6 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2014-04-01
7 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2014-12-12
8 10865 10864-JT 1.4675 2.5 29.2 146 0.7637 0.0415 191 99 0.6623 45.1 0.45 300 2012-12-12
9 4.8 6700-023-JT 0.39 2.5 15.75 84 0.3348 0.011 251 215 0.0442 11.3 0.11 320 2012-12-12
10 8*8 J201方铜-JT 1.3425 2.5 30.75 164 0.7905 0.038 207 122 0.514 38.3 0.38 320 2012-12-12
11 5284 7245-JT 1.487 2.5 38.6 206 0.7087 0.042 291 139 0.7363 49.5 0.5 320 2012-12-12
12 10865 11483-JT 1.45 2.5 36.6 182 1 0.063 182 126 0.387 26.7 0.27 298 2012-12-12
固定不变 可变



查询建档日期为:2014-03-30后的数据为以下:
1 5.06 J601螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 430 2012-12-12
2 5.07 J602螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 433 2012-12-12
5 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2012-12-12
8 10865 10864-JT 1.4675 2.5 29.2 146 0.7637 0.0415 191 99 0.6623 45.1 0.45 300 2012-12-12
9 4.8 6700-023-JT 0.39 2.5 15.75 84 0.3348 0.011 251 215 0.0442 11.3 0.11 320 2012-12-12
10 8*8 J201方铜-JT 1.3425 2.5 30.75 164 0.7905 0.038 207 122 0.514 38.3 0.38 320 2012-12-12
11 5284 7245-JT 1.487 2.5 38.6 206 0.7087 0.042 291 139 0.7363 49.5 0.5 320 2012-12-12
12 10865 11483-JT 1.45 2.5 36.6 182 1 0.063 182 126 0.387 26.7 0.27 298 2012-12-12
查询建档日期为:2014-05-30后的数据为以下:
1 5.06 J601螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 430 2012-12-12
3 5.07 J602螺丝-JT 0.21 2.6 44.5 "319
" 0.2326 0.013 1367 745 0.1815 42.6 0.43 431 2014-04-01
6 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2014-04-01
8 10865 10864-JT 1.4675 2.5 29.2 146 0.7637 0.0415 191 99 0.6623 45.1 0.45 300 2012-12-12
9 4.8 6700-023-JT 0.39 2.5 15.75 84 0.3348 0.011 251 215 0.0442 11.3 0.11 320 2012-12-12
10 8*8 J201方铜-JT 1.3425 2.5 30.75 164 0.7905 0.038 207 122 0.514 38.3 0.38 320 2012-12-12
11 5284 7245-JT 1.487 2.5 38.6 206 0.7087 0.042 291 139 0.7363 49.5 0.5 320 2012-12-12
12 10865 11483-JT 1.45 2.5 36.6 182 1 0.063 182 126 0.387 26.7 0.27 298 2012-12-12
查询建档日期为:2015-05-30后的数据为以下:
1 5.06 J601螺丝-JT 0.21 2.5 44.4 "318
" 0.2326 0.013 1367 745 0.1814 42.5 0.42 430 2012-12-12
4 5.07 J602螺丝-JT 0.21 2.6 44.5 "319
" 0.2326 0.013 1367 745 0.1815 42.6 0.43 431 2014-12-12
7 R30MD20-79 R30MD20-79-JT 0.96 2.5 35.4 189 0.552 0.0232 342 197 0.3848 40.1 0.4 320 2014-12-12
8 10865 10864-JT 1.4675 2.5 29.2 146 0.7637 0.0415 191 99 0.6623 45.1 0.45 300 2012-12-12
9 4.8 6700-023-JT 0.39 2.5 15.75 84 0.3348 0.011 251 215 0.0442 11.3 0.11 320 2012-12-12
10 8*8 J201方铜-JT 1.3425 2.5 30.75 164 0.7905 0.038 207 122 0.514 38.3 0.38 320 2012-12-12
11 5284 7245-JT 1.487 2.5 38.6 206 0.7087 0.042 291 139 0.7363 49.5 0.5 320 2012-12-12
12 10865 11483-JT 1.45 2.5 36.6 182 1 0.063 182 126 0.387 26.7 0.27 298 2012-12-12

------解决思路----------------------
SELECT * FROM(
SELECT *,ROW_NUMBER()OVER(PARTITION BY T2,T3 ORDER BY 建档日期 DESC)RN
FROM 产品配置表
WHERE 建档日期<=@TIME--其它过滤条件加在此处
)T
WHERE RN=1

------解决思路----------------------

select a.*
from 产品配置表 a join
(
  select T2, T3, MAX(建档日期) 建档日期
  from 产品配置表
  where 建档日期<=@建档日期
  group by T2, T3
) t ON a.T2=t.T2 AND a.T3=t.T3 AND a.建档日期=t.建档日期
  相关解决方案