Your question requires a pivot, which needs to be predefined. Meaning, if you want to include 2 extra COLUMNS in your result set, your query can then only store up to 2 attributes. This is a PRESENTATION layer problem, not query layer. But alas, I have a general solution for you. It assumes you will have a max number of 2 attributes (for the reasons states above). Here is the query:
SELECT
P.ProductName,
A.AttributeName,
PA.AttributeValue,
B.AttributeName,
PB.AttributeValue
FROM lb_products P
LEFT JOIN (select row_number() over (partition by productID order by AttributeID asc) rn, *
from lb_product_attributes x) PA
ON P.ProductID = PA.ProductID and PA.rn = 1
LEFT JOIN (select row_number() over (partition by productID order by AttributeID asc) rn, *
from lb_product_attributes x) PB
ON P.ProductID = PB.ProductID and PB.rn = 2
LEFT JOIN lb_attributes A
ON PA.AttributeID = A.AttributeID
LEFT JOIN lb_attributes B
ON PB.AttributeID = B.AttributeID;
And the SQL Fiddle for you to play around. Good luck! And feel free to ask any questions :)
http://sqlfiddle.com/#!6/49a9e0/5