The problem that you have is that you are comparing to the lowest/largest prices for all property types. So, property type 1 could match the lowest price of property type 2, and it will be in your output.
You want correlated subqueries:
SELECT Area, Address, Property_Code, Property_Type, Price, Market_Date, Sold
FROM tbl_Sale_Property sp
WHERE sp.Price = (SELECT MIN(Price) FROM tbl_Sale_Property sp2 where sp.Property_Type = sp2.Property_Type) or
sp.Price = (SELECT MAX(Price) FROM tbl_Sale_Property sp2 where sp.Property_Type = sp2.Property_Type)
ORDER BY Property_Type;
You also have the simple issue that more than one record might have the minimum value. Is your problem that you need to limit the results to one out of several minimum/maximum prices?