0

我有一些我想在 R 环境中调用的 PostgreSQL/PostGIS tablefunc 查询。有什么办法可以做到这一点?

前任 :

dbGetQuery(con, "SELECT * FROM CROSSTAB(
'SELECT factor1, factor2, ROUND(SUM(ST_AREA(geom))::numeric, 3) FROM table GROUP BY factor1, factor2 ORDER BY 1,2',
'SELECT factor2 FROM table GROUP BY factor2 ORDER BY factor2 '
) AS ct("factor1" varchar, "factor2value1" varchar, "factor2value2" varchar, "factor2value3" varchar)
")
4

1 回答 1

0

如果您成功连接到 Postgres,任何兼容的 Postgres 查询都可以工作。因此,如果 SQL 语句在 Postgres(即 psql、pgAdmin)中工作,它应该在连接到它的 R 等客户端中工作。注意:crosstab需要扩展。只需使用反斜杠转义 SQL 语句中的双引号即可编译为 R 中的字符:

sql <- "SELECT * 
        FROM CROSSTAB(
           'SELECT factor1, factor2, 
                   ROUND(SUM(ST_AREA(geom))::numeric, 3) 
            FROM table 
            GROUP BY factor1, factor2 
            ORDER BY 1,2'
           ,
           'SELECT factor2 
            FROM table 
            GROUP BY factor2 
            ORDER BY factor2 '
         ) AS ct(\"factor1\" varchar, \"factor2value1\" varchar,
                 \"factor2value2\" varchar, \"factor2value3\" varchar)"

dbGetQuery(con, sql)
于 2019-04-26T23:04:40.147 回答