雖然這似乎醜陋,這只是一個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,...?你可以添加列到表中? –