SELECT
ObjectID,
SUM(CASE WHEN Attribute = 'a' THEN Value ELSE NULL END) AS a,
SUM(CASE WHEN Attribute = 'b' THEN Value ELSE NULL END) AS b,
SUM(CASE WHEN Attribute = 'c' THEN Value ELSE NULL END) AS c
FROM mytable
GROUP BY ObjectID
說明:
使用 CASE 語句,我們選擇 Attribute 的值作為特定值,即「a」、「b」等。因此,對於該特定列,僅選擇該特定屬性的值。
使用 SUM 我們聚合 Value 欄位的值。這樣,任何 ObjectID 的多行值都會聚合到一行中。
如果您不願意使用 SUM 因為您可能有非數字值,您可以按照 @xQbert 的建議使用 MAX ,如下所示:
SELECT
ObjectID,
MAX(CASE WHEN Attribute = 'a' THEN Value ELSE NULL END) AS a,
MAX(CASE WHEN Attribute = 'b' THEN Value ELSE NULL END) AS b,
MAX(CASE WHEN Attribute = 'c' THEN Value ELSE NULL END) AS c
FROM mytable
GROUP BY ObjectID
您可以使用以下查詢來實現它:
SELECT ObjectID, SUM(CASE WHEN Attribute = 'a' THEN Value ELSE NULL END) AS a, SUM(CASE WHEN Attribute = 'b' THEN Value ELSE NULL END) AS b, SUM(CASE WHEN Attribute = 'c' THEN Value ELSE NULL END) AS c FROM mytable GROUP BY ObjectID說明:
使用
CASE語句,我們選擇Attribute的值作為特定值,即「a」、「b」等。因此,對於該特定列,僅選擇該特定屬性的值。使用
SUM我們聚合Value欄位的值。這樣,任何ObjectID的多行值都會聚合到一行中。如果您不願意使用
SUM因為您可能有非數字值,您可以按照 @xQbert 的建議使用MAX,如下所示:SELECT ObjectID, MAX(CASE WHEN Attribute = 'a' THEN Value ELSE NULL END) AS a, MAX(CASE WHEN Attribute = 'b' THEN Value ELSE NULL END) AS b, MAX(CASE WHEN Attribute = 'c' THEN Value ELSE NULL END) AS c FROM mytable GROUP BY ObjectID