sql - TSQL returning the first record -
i have sql server 2008 table following data (small sample)
id date value 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-01 1 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-02 2 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-03 3 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-04 4 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-05 null ef595de6-ff57-4625-8254-287f49843445 2010-06-02 2 ef595de6-ff57-4625-8254-287f49843445 2010-06-03 3 ef595de6-ff57-4625-8254-287f49843445 2010-06-04 4 ef595de6-ff57-4625-8254-287f49843445 2010-06-05 null c6f459ef-1493-4864-81c2-e5b55283ef0c 2010-06-04 45 c6f459ef-1493-4864-81c2-e5b55283ef0c 2010-06-05 null i running query
select * [test].[dbo].[testtable] id in ( select id [test].[dbo].[testtable] date='2010-06-05' , value null ) , date = dateadd(d, -4, '2010-06-05') which returns
id date value 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-01 1 but when record not exist 2010-06-01 return next min date
so results see sample be
id date value 20448d6f-4099-408d-85fe-11ec6690cdb8 2010-06-01 1 ef595de6-ff57-4625-8254-287f49843445 2010-06-02 2 c6f459ef-1493-4864-81c2-e5b55283ef0c 2010-06-04 45 i have millions of records how can in t-sql query?
thanks
you can use min aggregate in subquery:
select t.id, t.date, t.value [test].[dbo].[testtable] t join ( select min(date) mindate, id [test].[dbo].[testtable] date >= '6/1/2010' group id ) t2 on t.id = t2.id , t.date = t2.mindate t.id in ( select id [test].[dbo].[testtable] date='2010-06-05' , value null )
Comments
Post a Comment