用dbgetQuery查询CASE WHEN的SQL查询不工作[关闭] 。

问题描述 投票:0回答:1

我有一个问题:我在R中测试了CASE WHEN SQL查询,但得到了一个错误。请您,提出一个解决方案?

下面是重现的代码。

library(sparklyr)
library(gapminder)
spark_conn <- spark_connect(master = "local")
data("gapminder")
copy_to(spark_conn, gapminder)
src_tbls(spark_conn)

#The query gave an error
DBI::dbGetQuery(spark_conn, "
                SELECT *
                CASE WHEN pop > 100000000 THEN 'Biggy'
                WHEN pop < 10000000 THEN 'Small'
                ELSE 'Medium' END
                AS pop_category
                FROM gapminder 
                WHERE year = 1957
                ")


Error: org.apache.spark.sql.catalyst.parser.ParseException: 
mismatched input 'WHEN' expecting <EOF>(line 3, pos 21)

== SQL ==

                SELECT *
                CASE WHEN pop > 10000000 THEN 'Biggy'
---------------------^^^
                WHEN pop < 10000000 THEN 'Small'
                ELSE 'Medium' END
                AS pop_category
                FROM gapminder 
sql r dbi sparklyr
1个回答
1
投票

你少了一个逗号 , 之后 *...只要在后面加上逗号,你的查询就可以了。

SELECT *,
    CASE WHEN pop > 100000000 THEN 'Biggy'
    WHEN pop < 10000000 THEN 'Small'
    ELSE 'Medium' END
    AS pop_category
FROM gapminder 
WHERE year = 1957
© www.soinside.com 2019 - 2024. All rights reserved.