sql - Oracle SQL Sum 缺少右括号

标签 sql oracle sum

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

我把它放在sqlfiddle

最佳答案

Oracle 没有像 MySQL 那样使用 CASE 或 if 的简写方式。因此,您必须在 sum 中使用 CASE:

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;

参见SQL Fiddle with Demo

关于sql - Oracle SQL Sum 缺少右括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308261/

相关文章:

sql - 字符串是否可以由一组字母组成的正则表达式

c# - 将文字分配给 oracle block 中的绑定(bind)变量(C# 输出参数)

mysql - 更新子表中的parentID并从父表中删除重复行

sql - 是否有一种算法可以对两个文本进行编码,即使改变它们的位置,结果也会相同?

oracle - 无法将日期数据插入到 oracle 表中

oracle - 在 Oracle 中发出 COMMIT 之前 INSERT 是如何工作的

二维数组之和

没有表格的 Excel 求和公式 - 相当于数学求和符号

mysql - 使用 MYSQL QUERY 和 GROUP BY 获取总计和小计

SQL 触发器以插入的值作为参数调用存储过程