Oracle SQL总和缺少右括号

Oracle SQL总和缺少右括号,sql,oracle,sum,Sql,Oracle,Sum,我有一个在MySQL上运行的Oracle SQL,但是当我在Oracle上运行时,我得到了“缺少右括号” 我把它放在上,Oracle没有一种使用大小写或类似MySQL的速记方式。因此,您必须在您的总和中使用大小写: select p.id, p.name, t.id as toyid, t.name as toyname from person p inner join toys t on p.id = t.person_id inner join ( select perso

我有一个在MySQL上运行的Oracle SQL,但是当我在Oracle上运行时,我得到了“缺少右括号”


我把它放在

上,Oracle没有一种使用大小写或类似MySQL的速记方式。因此,您必须在您的
总和中使用
大小写

select p.id, p.name, 
  t.id as toyid, 
  t.name as toyname
from person p
inner join toys t on p.id = t.person_id
inner join 
(
  select person_id
  from toys 
  group by person_id
  having sum(case when name = 'hat' then 1 else 0 end) > 0 and
    sum(case when name = 'doll' then 1 else 0 end) > 0
) t2 
  on p.id = t2.person_id;

请参见

Oracle没有使用
大小写的速记方法,或者类似MySQL。因此,您必须在您的
总和中使用
大小写

select p.id, p.name, 
  t.id as toyid, 
  t.name as toyname
from person p
inner join toys t on p.id = t.person_id
inner join 
(
  select person_id
  from toys 
  group by person_id
  having sum(case when name = 'hat' then 1 else 0 end) > 0 and
    sum(case when name = 'doll' then 1 else 0 end) > 0
) t2 
  on p.id = t2.person_id;

thx,太好了!。。。。你认为哪一种更适合大规模应用,你的还是@bmw0128对不起,我不确定哪一种性能更好,你需要做一些测试。我从未测试过返回相同结果的不同SQL。你的意思是使用一个能给执行时间的工具吗?如果是的话,你知道蟾蜍会这样做吗?我想我需要一个重要的数据集才能得到准确的结果?只是想知道一般情况下如何比较返回相同数据集的SQL。@bmw0128您会想看看解释计划——thx,太好了!。。。。你认为哪一种更适合大规模应用,你的还是@bmw0128对不起,我不确定哪一种性能更好,你需要做一些测试。我从未测试过返回相同结果的不同SQL。你的意思是使用一个能给执行时间的工具吗?如果是的话,你知道蟾蜍会这样做吗?我想我需要一个重要的数据集才能得到准确的结果?只是想知道一般情况下如何比较返回相同数据集的SQL。@bmw0128您会想看看解释计划--