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
您可以使用以下查询来实现它:
说明:
使用
CASE
语句,我们选择Attribute
的值作为特定值,即“a”、“b”等。因此,对于该特定列,仅选择该特定属性的值。使用
SUM
我们聚合Value
字段的值。这样,任何ObjectID
的多行值都会聚合到一行中。如果您不愿意使用
SUM
因为您可能有非数字值,您可以按照 @xQbert 的建议使用MAX
,如下所示: