без самостоятельного объединения, попробуйте это:
DECLARE @YourTable table (item int,value int, Date datetime)
INSERT @YourTable VALUES (1 , 10 , '01/01/2010')
INSERT @YourTable VALUES (1 , 20 , '02/01/2010')
INSERT @YourTable VALUES (1 , 30 , '03/01/2010')
INSERT @YourTable VALUES (1 , 40 , '04/01/2010')
INSERT @YourTable VALUES (1 , 50 , '05/01/2010')
INSERT @YourTable VALUES (1 , 80 , '10/01/2010')
INSERT @YourTable VALUES (2 , 30 , '04/01/2010')
INSERT @YourTable VALUES (2 , 60 , '06/01/2010')
INSERT @YourTable VALUES (2 , 70 , '07/01/2010')
INSERT @YourTable VALUES (2 , 80 , '08/01/2010')
INSERT @YourTable VALUES (2 , 100 , '09/01/2010')
SELECT Item, Value, MIN(CASE WHEN Value >= 50 THEN Date ELSE NULL END) OVER (PARTITION BY Item)
FROM @YourTable
ВЫВОД:
Item Value
----------- ----------- -----------------------
1 10 2010-05-01 00:00:00.000
1 20 2010-05-01 00:00:00.000
1 30 2010-05-01 00:00:00.000
1 40 2010-05-01 00:00:00.000
1 50 2010-05-01 00:00:00.000
1 80 2010-05-01 00:00:00.000
2 30 2010-06-01 00:00:00.000
2 60 2010-06-01 00:00:00.000
2 70 2010-06-01 00:00:00.000
2 80 2010-06-01 00:00:00.000
2 100 2010-06-01 00:00:00.000
Warning: Null value is eliminated by an aggregate or other SET operation.
(11 row(s) affected)