通过使用R将值传递到SQL查询中来选择WHERE语句的过滤条件

时间:2019-06-14 14:28:16

标签: sql r sql-server dataframe case

四个条件A到D将传递到SQL查询的WHERE语句中,以从数据库1中提取包含相同名称的对应列的信息。我希望SQL WHERE语句能够忽略两个条件,即条件B的值也可以在数据库2中找到,条件B和C也包含一个称为A的列,并将这两个条件保留在WHERE语句中当在数据库2的A列中找不到A的值时。

此代码是用R语言编写的。我正在查看数据库,并且我知道如果代码按我希望的方式工作,应该会收到一些信息。

query <- paste(/*some select and from statements, these worked*/
                 "WHERE Database1.A = ?",
                 "AND",
                 "CASE ",
                 "WHEN (0 = SELECT COUNT(Database2.A) FROM Database2 WHERE Database.A = ?)",
                 "THEN Database1.D = ?",
                 "ELSE Database1.B = ?",
                 " END",
                 "CASE ",
                 "WHEN (0 <> SELECT COUNT(Database2.A) FROM Database2 WHERE Database.A = ?)",
                 "THEN Database1.C = ?",
                 " END",
                 "AND Database1.D = ?",
                 "ORDER BY Database1.E",
                 sep = " ")

    sqlParams <- data.frame(
      A = params$A,
      A1 = params$A,
      D = params$D,
      B = params$B,
      A2 = params$A,
      C = params$C,
      B1 = params$B
    )

  res <- sqlExecute(con, query, sqlParams, 
                    fetch = TRUE, stringsAsFactors = FALSE)

我正在查看数据库1,并且B和C列中没有任何值。因此,如果我在A中输入的值是它们在A列中的值,则应该有与此项目相关的信息列表。然而 没有错误消息,但没有任何显示。

0 个答案:

没有答案