通过R查询SQL数据库,并返回特定列表

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

我必须通过 R 查询和 SQL 数据库,并且很难让它返回我需要的内容。基本上,数据库有“timeStamp”、“line”、“aggregate”、“name”、“location”和“topic”列。这是我尝试获取时间范围内的所有唯一主题及其关联的列值:

con <- openConn()
query <- "SELECT DISTINCT topic, line, aggregate, name, location FROM doc.database
WHERE \"timeStamp"\ BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'
GROUP BY topic"
topicsdf <- dbGetQuery(con, query)

但是,这会返回错误:

dbSendQuery(conn, statements, ...) 中的错误: 无法检索 JDBC 结果集 JDBC 错误:发送到后端时发生 I/O 错误。 陈述: 选择不同的主题、行、聚合、名称、位置 FROM 文档数据库 “2023-06-01 00:00:00”和“2023-10-30 10:00:00”之间的“时间戳”

非常感谢对此的帮助,因为我不熟悉这种类型的查询

sql r jdbc
1个回答
0
投票

您的查询正在对主题执行

GROUP BY
,这要求您的 SQL 数据库为每个主题值返回一条记录。但是,查询还选择其他列,而不是聚合函数内的列。因此,不清楚应返回 line
aggregate
name
location
的哪个
值,因此此查询会在您的数据库上生成错误。

您在评论中澄清了您的要求:

也许我可以选择每个主题的列值的所有不同组合?

在这种情况下,您可以尝试简单地删除

GROUP BY

 子句并执行不同的选择:

con <- openConn() query <- "SELECT DISTINCT topic, line, aggregate, name, location FROM doc.database WHERE \"timeStamp\" BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'" topicsdf <- dbGetQuery(con, query)
    
© www.soinside.com 2019 - 2024. All rights reserved.