我正在编写一个查询来获取金额> 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数据库上运行时遇到语法错误.
我不会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)