sql—配置单元中的透视/转置

j8yoct9x  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(334)

我想通过使用id和convert id作为列标题和sum作为值来计算sum和groups。
例如

ID|amount
1|100
1|200
2|100

最终输出

1|2
300|100

任何指针:我已经尝试下面的查询

select * from table pivot( sum(amount) for id in ("666","111"))

但是低于错误,我不知道我是否错过了任何eof

org.apache.spark.sql.AnalysisException: missing EOF at '(' near 'PIVOT'; line 1 pos 63
        at org.apache.spark.sql.hive.HiveQl$.createPlan(HiveQl.scala:318)
col17t5w

col17t5w1#

您可以使用条件聚合,因为配置单元不支持 pivot .

select sum(case when id='111' then amount else 0 end),sum(case when id='666' then amount else 0 end)
from tbl
``` `id='111'` 返回一个 `boolean` 转换为 `int` 求和。
这假设表中的id数量有限。
jvidinwx

jvidinwx2#

oracle/plsql中pivot子句的语法为:

SELECT * FROM
(
  SELECT column1, column2
  FROM tables
  WHERE conditions
)
PIVOT 
(
  aggregate_function(column2)
  FOR column2
  IN ( expr1, expr2, ... expr_n) | subquery
)
ORDER BY expression [ ASC | DESC ];

包括分号。再试一次,让我们知道。

相关问题