I'm using Microsoft's SQL Server 2000 and have a query that is essentially this (except that Z is a further subquery, not a table):
select 
  A.key1,
  A.key2,
  B.value1
from A
left join (select * from Z where value1 > 0) B 
  on A.key1 = B.key1 and A.key2 = B.key2
order by A.key1, B.key1
Column value1 is of type float. For some reason, instead of returning NULL where rows don't exist in subquery B, value1 is set to 0.0.
I worked around it, but can anyone suggest why this happens? Is it a known feature/bug of SQL Server?