在 DB2 中通过透视转置数据结构
该任务需要将 DB2 表中的行转置为列,将数据从以下结构转换:
ItemID Item Value --------------------- 1 Meeting Now 1 Advise Yes 1 NoAdvise No 2 Meeting Never 2 Advise No 2 NoAdvise Null 2 Combine Yes
进入想要的结构:
ItemID Meeting Advise NoAdvise --------------------------------------- 1 Now Yes No 2 Never No Null
要实现此转换,您可以使用采用 PIVOT 运算符的 SQL 查询,该查询可以根据指定的分类字段将行转置为列。下面是一个可以在 DB2 LUW 中使用的查询示例:
SELECT A.ItemID, MAX(CASE WHEN A.Item = 'Meeting' THEN Value END) AS Meeting, MAX(CASE WHEN A.Item = 'Advise' THEN Value END) AS Advise, MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise FROM A GROUP BY A.ItemID
在此查询中,没有显式使用 PIVOT 运算符,而是通过在 MAX 内使用 CASE 语句来隐式实现() 聚合函数。 CASE 语句充当对行进行分类并返回每个类别的最大值的方法。然后,MAX() 聚合函数确保返回每个类别的最大值。
请注意,根据要求,“Combine”列不包含在转置结果中。生成的数据将根据需要转置到列中。
以上是如何使用 PIVOT(隐式)在 DB2 中将行转置为列?的详细内容。更多信息请关注PHP中文网其他相关文章!