• MAX() is working upon as per the definition of the base table.

    in your query u are using left join, if you try to use right join u will be even more surprised.

    Once you are done with the surprised run the below query

    declare @a table( keyid int,keyname varchar(50) )

    declare @b-2 table( keyid int,keyname varchar(50) )

    declare @C table( akeyid int,akeyname varchar(50), bkeyid int, bkeyname varchar(50) ,rowasc int )

    insert into @a values (1,'10')

    insert into @a values (1,'10')

    insert into @a values (2,'20')

    insert into @a values (4,'40')

    insert into @a values (6,'60')

    insert into @a values (8,'80')

    insert into @a values (9,'90')

    insert into @b-2 values (1,'100')

    insert into @b-2 values (3,'300')

    insert into @b-2 values (5,'500')

    insert into @b-2 values (6,'600')

    insert into @b-2 values (8,'800')

    insert into @b-2 values (8,'801')

    INSERT into @C

    select a.keyid as akeyid,a.keyname as akeyname , b.keyid as bkeyid ,b.keyname as bkeyname,

    row_number() over( order by a.keyid asc ) as rowasc

    from @a a

    left join @b-2 b on a.keyid = b.keyid

    SELECT MAX(rowasc), COUNT(akeyid)

    from @C

    SELECT MAX(rowasc)

    from @C

    Its a bug in 2005, 2008, 2008R2 .... but its running perfectly on the 2012. :w00t:

    here is the link http://support.microsoft.com/kb/2565683

    kindly upgrade your sql server to latest SPs if possible.