这可能是一个非常简单的解决方案,但我正在努力工作几个小时而没有任何结果。让我用例子说明我的问题。我有一张桌子:
productID|attributeID|attributeValue
001 | a01 | value1
001 | a02 | value2
002 | a01 | value2_1
002 | a02 | value2_2
我尝试过使用此查询代码:
SELECT
productID,
attributeValue,
NEW_attributeValue = (SELECT attributeValue
FROM table1
WHERE attributeID = 'a02')
FROM
table1
WHERE
attributeID = 'a01'
以上查询代码只是我的概念。代码失败,因为第二个子查询有多个结果。你知道如何收到这个结果:
001 | value1 | value2
002 | value2_1 | value2_2
答案 0 :(得分:0)
一种简单的方法是条件聚合
select productId,
max(case when attributeID = 'a01' then attributeValue end) as a01,
max(case when attributeID = 'a02' then attributeValue end) as a02
from t
group by productId;
答案 1 :(得分:0)
对列属性ID使用数据透视表概念
答案 2 :(得分:0)
试试这个: -
(1, 0)
但最好使用条件聚合
答案 3 :(得分:0)
使用PIVOT看起来像这样:
SELECT *
FROM (
SELECT productID, attributeID, attributeValue
FROM table1
) AS SourceTable
PIVOT (
MAX([attributeValue])
FOR [attributeID] IN ([a01], [a02])
) AS PivotTable;