【发布时间】:2019-06-04 21:34:56
【问题描述】:
我有一张主桌和两张辅助桌。我需要将所有三个表中的信息提取到一个表中。但是,这两个支持表有相互冲突的信息。因此,在大表中,只有某些行应该具有来自一个支持表的值,而其他行应该具有来自另一个支持表的值。我想使用 CASE 语句根据某些条件选择输入的数据
此 sql 代码位于 R 语言代码中,用于其他目的。但是sql代码是独立的,没有错误与R代码有关。 A.A11 和 C.C1 都是类型字符,而 A.A12 和 C.C1 都是数字。
"SELECT ",
"A.A1, A.A3,",
"CASE",
"WHEN A.A12 = 0 THEN C.C6, C.C7",
"ELSE B.B6, B.B7",
"END",
"FROM ((A",
"INNER JOIN B",
"ON A.A12 = B.B1)",
"INNER JOIN C",
"ON CAST(A.A11 AS varchar(10)) = CAST(C.C1 AS varchar(10)))"
Warning in sqlExecute(con, query, sqlParams, fetch = TRUE, stringsAsFactors = FALSE) :
42000 102 [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ','.
Warning in sqlExecute(con, query, sqlParams, fetch = TRUE, stringsAsFactors = FALSE) :
42000 8180 [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
Warning: Error in sqlExecute: 42000 102 [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ','.
42000 8180 [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
[RODBCext] Error: SQLExecute failed
【问题讨论】:
-
每个字段都需要一个 case 语句。因此,例如,您不能拥有
THEN C.C6, C.C7 -
请将您的输入减少到说明问题所需的最小值,然后如果 A、B 和 C 是输入数据帧,则显示 dput(A)、dput(B) 和 dput( C) 并显示预期结果。
-
抱歉,您能详细说明每个字段是什么意思吗?