SQL语法错误(从事务代码为211和292的帐户ID中排除事务代码为293的帐户ID)
从事务代码为211和292的帐户ID中排除事务代码为293的帐户ID的SQL语法错误SQL语法错误(从事务代码为211和292的帐户ID中排除事务代码为293的帐户ID),sql,ms-access,Sql,Ms Access,从事务代码为211和292的帐户ID中排除事务代码为293的帐户ID的SQL语法错误 SELECT trn1.ACCOUNT_ID FROM ( SELECT ACCOUNT_ID FROM Transaction_Data_Flexi WHERE TRAN_CODE = 211 OR TRAN_CODE = 292 ) AS trn1 WHERE ACCOUNT_ID NOT IN ( SELECT ACCOUNT_ID FROM Transaction_Data_Flexi WHERE
SELECT trn1.ACCOUNT_ID
FROM
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 211 OR TRAN_CODE = 292
) AS trn1
WHERE ACCOUNT_ID NOT IN
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 293
) AS trn2
GROUP BY ACCOUNT_ID
您缺少加入的条件。如果不打算指定条件,请使用交叉连接而不是左连接
SELECT trn1.ACCOUNT_ID
FROM
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 211 OR TRAN_CODE = 292
) AS trn1
WHERE ACCOUNT_ID NOT IN
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 293
) AS trn2
GROUP BY ACCOUNT_ID
将出现另一个错误-对于GROUPBY子句,您需要指定分组依据的列
GROUP BY trn1.account_id, trn2.account_id
SELECT trn1.ACCOUNT_ID
FROM
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 211 OR TRAN_CODE = 292
) AS trn1
WHERE ACCOUNT_ID NOT IN
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 293
) AS trn2
GROUP BY ACCOUNT_ID
我建议使用小组进行此操作,并且:
SELECT trn1.ACCOUNT_ID
FROM
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 211 OR TRAN_CODE = 292
) AS trn1
WHERE ACCOUNT_ID NOT IN
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 293
) AS trn2
GROUP BY ACCOUNT_ID
这将检查给定事务的代码。有条件验证代码。谢谢大家的帮助!是的,您的应该可以工作,但我想尝试使用NOT IN语句,我已经更新了查询,如下所示。但我仍然不同意中间where语句附近缺少运算符:
SELECT trn1.ACCOUNT_ID
FROM
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 211 OR TRAN_CODE = 292
) AS trn1
WHERE ACCOUNT_ID NOT IN
(
SELECT ACCOUNT_ID
FROM Transaction_Data_Flexi
WHERE TRAN_CODE = 293
) AS trn2
GROUP BY ACCOUNT_ID
谢谢大家的帮助!是的,您的应该可以工作,但我想尝试使用NOT IN语句,我已经更新了查询,如下所示。但我仍然有一个问题,就是中间where语句附近缺少运算符:选择trn1.ACCOUNT\u ID FROM SELECT ACCOUNT\u ID FROM Transaction\u Data\u Flexi where TRAN\u CODE=211或TRAN\u CODE=292作为trn1 where ACCOUNT\u ID NOT in SELECT ACCOUNT\u ID FROM Transaction\u Data\u Flexi where TRAN\u CODE=293作为trn2 GROUP BY帐户\u停用AS trn2。另外,下次请指出确切的错误和发生错误的行。在某些情况下,中的性能比现有的更差。例如,请注意,我编辑了您的SQL并将其作为代码块放入。我试过了,它说标准表达式中的数据不匹配。有什么想法吗?这意味着您正在某处比较两种不同的数据类型。最有可能的情况是,您需要将您的传输代码放在如下引号中:“211”