Not sure of best way to do it with ROW_NUMBER now I've looked at it. Here's a framework though:CREATE TABLE #Pricing( P_Volume int NOT NULL, P_Price money NOT NULL, PRIMARY KEY ( P_Volume ))INSERT INTO #Pricing(P_Volume, P_Price)SELECT 100, 10.00 UNION ALLSELECT 200, 20.00 UNION ALLSELECT 300, 40.00CREATE TABLE #Volume( V_Client varchar(20) NOT NULL, V_Volume int NOT NULL, PRIMARY KEY ( V_Client ))INSERT INTO #Volume(V_Client, V_Volume)SELECT 'name1', 50 UNION ALLSELECT 'name2', 135 UNION ALLSELECT 'name3', 285-- SET SHOWPLAN_TEXT ONGO-- SET STATISTICS IO ON; SET STATISTICS TIME ONPRINT 'KHTan'SELECT *FROM #Volume CROSS APPLY ( SELECT TOP 1 P_Price FROM #Pricing WHERE V_Volume <= P_Volume ORDER BY P_Volume ) AS P/**Table '#Pricing'. Scan count 3, logical reads 6Table '#Volume'. Scan count 1, logical reads 2Nested Loops(Inner Join, OUTER REFERENCES:([tempdb].[dbo].[#Volume].[V_Volume]))|--Clustered Index Scan(OBJECT:([tempdb].[dbo].[#Volume]))|--Top(TOP EXPRESSION:((1))) |--Clustered Index Seek(OBJECT:([tempdb].[dbo].[#Pricing]), SEEK:([tempdb].[dbo].[#Pricing].[P_Volume] >= [tempdb].[dbo].[#Volume].[V_Volume]) ORDERED FORWARD)**/GOSET STATISTICS IO OFF; SET STATISTICS TIME OFFGOSET SHOWPLAN_TEXT OFFGODROP TABLE #VolumeGODROP TABLE #PricingGO