使用多列透视数据
透视查询对于将数据从高而窄的格式重新排列为宽而表格的格式至关重要。在这种特定情况下,您需要将具有两列(即 org 和position)的透视格式表示的数据转换为更宽的格式,每种语言(en、fi 和 sv)具有单独的列。
As您提到,使用 CONNECT BY 命令进行数据透视查询可能很有用。然而,这里有一个使用 PIVOT 运算符的更简单的方法:
SELECT user_id, MAX(CASE WHEN lang = 'en' THEN org END) AS org_en, MAX(CASE WHEN lang = 'en' THEN position END) AS position_en, MAX(CASE WHEN lang = 'fi' THEN org END) AS org_fi, MAX(CASE WHEN lang = 'fi' THEN position END) AS position_fi, MAX(CASE WHEN lang = 'sv' THEN org END) AS org_sv, MAX(CASE WHEN lang = 'sv' THEN position END) AS position_sv FROM source GROUP BY user_id
MAX() 函数用于检索与每个用户 ID 和语言组合关联的最新值。或者,您可以根据您的具体要求使用 SUM() 等聚合函数。
此查询将生成所需的输出:
user_id | org_fi | position_fi | org_en | position_en | org_sv | position_sv |
---|---|---|---|---|---|---|
1001 | USD | Bossa | USE | Boss | NULL | NULL |
1002 | NULL | NULL | NULL | NULL | GWR | Dim |
1003 | GGA | DCS | NULL | NULL | GCA | DDD |
请记住调整 MAX() 函数以及根据您的实际数据和需求的CASE表达式。通过这种方法,您可以使用多列有效地转换数据,从而可以灵活地以更适合您的分析和演示需求的格式来表示数据。
以上是如何使用 SQL 将多列(组织和位置)数据转换为更广泛的格式?的详细内容。更多信息请关注PHP中文网其他相关文章!