案例陈述在哪里

Pin*_*inu 1 sql oracle

我正在编写一个查询来获取金额> 100的所有发票,美国> 200表示CAN,> 1200表示mxn(墨西哥)

Invoice_Header表(总金额和公司ID)公司表(公司ID和货币ID)货币表(货币ID和货币)

  SELECT IH.Invoice_Num , IH.invoice_amount , IH.invoice_date
  FROM Invoice_Header IH ,
       company c,
       Currency cu
  WHERE  IH.Company_oid = c.Company_oid
  AND    c.currency_oid = cu.currency_oid
  AND 
     CASE IH.total = 
         WHEN cu.code = 'USA' then IH.total > 100
         WHEN cu.code = 'CAN' then IH.total > 200
         WHEN cu.code = 'MXN'  then IH.total > 1200
     END
Run Code Online (Sandbox Code Playgroud)

尝试在oracle数据库上运行时遇到语法错误.

Jus*_*ave 6

我不会CASE在这里使用声明.听起来你想要一些基本的布尔逻辑

AND(   (cu.code = 'USA' and ih.total > 100)
    OR (cu.code = 'CAN' and ih.total > 200)
    OR (cu.code = 'MXN' and ih.total > 1200))
Run Code Online (Sandbox Code Playgroud)

如果你真的想CASE出于某种原因使用声明,你可以做类似的事情

AND 1 = (CASE WHEN cu.code = 'USA' and ih.total > 100 
              THEN 1
              WHEN cu.code = 'CAN' and ih.total > 200
              THEN 1
              WHEN cu.code = 'MXN' and ih.total > 1200 
              THEN 1
              ELSE 0
           END)
Run Code Online (Sandbox Code Playgroud)