虽然这似乎丑陋,这只是一个UNPIVOT
做了两次,这当然可以通过意见简化。第一个unpivot子查询为您提供了您的Attributes列,外部的unpivot为您提供了CatAttribs列。然后,你可以在最后做一个简单的WHERE
子句。
SELECT DISTINCT
ProductID
--,Attributes
--,CatAttributes
FROM
(
SELECT
ProductID
,Attributes
,CatAttrib1
,CatAttrib2
,CatAttrib3
FROM
(
SELECT
ProductID
,Attribute1
,Attribute2
,Attribute3
,Attribute4
,Attribute5
,Attribute6
,Attribute7
,Attribute8
,CatAttrib1
,CatAttrib2
,CatAttrib3
FROM
product.Products) a
UNPIVOT
(
Attributes FOR product.Products IN
(
Attribute1
,Attribute2
,Attribute3
,Attribute4
,Attribute5
,Attribute6
,Attribute7
,Attribute8
)
) AS attrUnpivot
) c
UNPIVOT
(
CatAttributes FOR product.Products IN
(
CatAttrib1
,CatAttrib2
,CatAttrib3
)
) AS catUnpivot
WHERE
ProductID = catUnpivot.ProductID
AND Attributes <> 0
AND CatAttributes <> 0
这样的气味就像可怕的餐桌设计,你需要规范事情。 –
你是对的....我不能控制数据模型不幸的是....你是对的,虽然它很烂。 – scarpacci
什么是数据类型? BIT,INT,...?你可以添加列到表中? –