Personally, I think I'd rather make a specific table to store my values, for two reasons: (1) I don't like intermixing my own data with "system" data. (2) It'd be a lot easier!
Now down to brass tacks to see how to make this work. I'm not too familiar with SQL Server (we use Oracle for our main database, and MySQL with mojoPortal). However, for something like this I'd probably create an Oracle PL/SQL function (the equivalent of a T-SQL stored procedure in SQL Server). It would be *something* like this (pseudocode alert!):
Create stored procedure get_prop_val (input guid, input PropName) as
begin
select NVL(A.PropertyValueString,' ')
from dbo.mp_UserProperties A
where A.UserGuid = {guid}
and A.PropertyName = {PropName};
end;
Then, you could build your SQL statement as something like:
select
up1.PropertyID,
up1.UserGuid,
get_prop_val(up1.UserGuid,'First_Name'),
get_prop_val(up1.UserGuid,'Last_Name'),
get_prop_val(up1.UserGuid,'DateOfNextAvailability'),
get_prop_val(up1.UserGuid,'IsVisaRequired'),
get_prop_val(up1.UserGuid,'MinRate'),
get_prop_val(up1.UserGuid,'MaxRate')
from
dbo.mp_userProperties up1
where
[where clause]
Hope that's useful.
Jamie