关键字为NOT IN的SQL查询
为什么这个问题是错误的关键字为NOT IN的SQL查询,sql,vb6,Sql,Vb6,为什么这个问题是错误的 我现在遇到语法错误,VB在抛出错误时没有突出显示错误的特定部分。下面的查询应该可以工作。尝试从sql server或任何sql ide运行它 select v.nroventa, sum(v.importe) from ventas v, pagosventas p where v.nroventa=p.nroventa and v.codigocliente=41 and v.nroventa not in (select p.nroventa
我现在遇到语法错误,VB在抛出错误时没有突出显示错误的特定部分。下面的查询应该可以工作。尝试从sql server或任何sql ide运行它
select v.nroventa, sum(v.importe)
from ventas v, pagosventas p
where v.nroventa=p.nroventa
and v.codigocliente=41
and v.nroventa not in (select p.nroventa
from pagosventas p, ventas v
where p.nroventa=v.nroventa)
group by v.nroventa
我认为您还需要在select的第一个字段上使用agg函数,例如MAX(v.nroventa)
你犯了什么错误?请粘贴它。这只是语法错误,它没有说在哪里。我只是假设它是一个缺少的单词或其他东西。直接在您使用的SQL引擎上尝试它,并显示您得到的错误。此查询没有意义(除非我完全缺少某些东西)。您正在对
进行子查询,其中
子句与主查询相同。所以你不会得到任何结果!如果我错了,有人纠正我!我同意子查询似乎是外部查询的超集,因此不应该返回任何结果——也许如果您提供一些示例数据和预期结果,我们可能能够构造一个合理的查询。另外,JOIN
作为标准SQL的一部分已经至少有20年了,并且在我能想到的每个数据库系统中都实现了它。请开始使用它,而不是,FROM
子句中的。选择列表中的内容需要在聚合函数中,或者是GROUP BY
子句中的一部分-v.nroventa
已经满足了第二个要求,如果给定子查询,它可能会返回0条记录。语法错误是否与在子查询以及主查询中再次使用p和v作为别名有关?
SELECT A.nroventa,A.sum_importe
FROM
(
select v.nroventa, sum(v.importe) AS sum_importe
from ventas v, pagosventas p
where v.nroventa=p.nroventa
and v.codigocliente=41
group by v.nroventa
) A,
(
SELECT v.nroventa
FROM ventas v
WHERE v.nroventa
not in
(select p.nroventa from pagosventas p, ventas v where p.nroventa=v.nroventa)
) B
WHERE A.nroventa = B.nroventa;
select MAX(v.nroventa), sum(v.importe)
from ventas v, pagosventas p
where v.nroventa=p.nroventa
and v.codigocliente=41
and v.nroventa not in (select p.nroventa
from pagosventas p, ventas v
where p.nroventa=v.nroventa)
group by v.nroventa