Select *
From (
Select A.product_id
,A.product_name
,B.product_property
,B.product_property_value
From Product A
Join ProductProperties B on A.product_id=B.product_di
) src
Pivot (max( product_property_value ) for product_property in ([Price],[Category],[Status] ) ) pvt
Select A.product_id
,A.product_name
,Price = max( case when product_propery='Price' then product_propery_value end)
,Category = max( case when product_propery='Category' then product_propery_value end)
,Status = max( case when product_propery='Status' then product_propery_value end)
From Product A
Join ProductProperties B on A.product_id=B.product_di
Group By A.product_id,A.product_name
2条答案
按热度按时间3qpi33ja1#
我不是说EAV是邪恶的,但应该谨慎地部署,并有很好的先见之明。
这里有两个例子,第一个是
PIVOT
,第二个是conditional aggregation
。我倾向于使用
conditional aggregation
,它提供了更大的灵活性,而且通常会提高性能未经测试,因为您未提供文本形式的样本数据和所需结果
iyfamqjs2#