在 DB2 中进行透视
这个问题围绕 DB2 表中的行转置为列。提供的数据由 ItemID、Item 和 Value 列构成。目标是将这些数据转换为转置格式,其中 Meeting、Advise 和 NoAdvise 的值排列为列,而 ItemID 用作行标识符。
执行此透视的一种方法是使用 GROUP BY 子句和多个 MAX() 表达式。通过使用 MAX() 并在 CASE 语句中指定每个项目类型的条件,可以检索相应的值。例如:
SELECT ItemID, MAX(CASE WHEN Item = 'Meeting' THEN Value END) AS Meeting, MAX(CASE WHEN Item = 'Advise' THEN Value END) AS Advise, MAX(CASE WHEN Item = 'NoAdvise' THEN Value END) AS NoAdvise FROM table_name GROUP BY ItemID
此查询生成所需的转置格式,其中 ItemID 用作主键,Meeting、Advise 和 NoAdvise 成为列标题。 GROUP BY 子句确保数据按 ItemID 分组,为每个项目提供不同的行。
或者,可以通过使用多个相关子查询来实现相同的结果,如本论坛中当前接受的答案所建议的那样。然而,值得注意的是,与更高效的 GROUP BY 解决方案相比,子查询方法可能会遇到性能问题,尤其是对于较大的数据集。
以上是如何使用 GROUP BY 在 DB2 中将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!