2015-10-14 47 views
0

我写这样SQL CASE和WHER并加入

"SELECT (
    CASE WHEN (1.00 - sys_pay.org_rate)*trans.txn_amt as agent_pay_current 
    < (trans.txn_amt - sys_pay.org_rate_limit) as agent_pay_max 
    THEN agent_pay_max 
    ELSE agent_pay_current END), 
    FROM sys_org 
    INNER JOIN trans ON sys_org.mid = trans.mid 
    INNER JOIN sys_pay ON sys_pay.mid = sys_org.mid 
    ORDER BY txn_date DESC limit 10" 

一个SQL它说我在SQL语法错误,如何使这正确吗?

+0

错误是什么?任何消息? – pedram

+0

“您的SQL语法错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行”作为agent_pay_current <(trans.txn_amt - sys_pay.org_rate_limit)as agent_pay_max'使用正确的语法“ – Windsooon

+0

MySQL ?并且您已将其标记为Sql-server。 :( – pedram

回答

0

尝试这样,

"SELECT (
      CASE 
       WHEN ((1.00 - sys_pay.org_rate) * trans.txn_amt) < (trans.txn_amt - sys_pay.org_rate_limit) THEN 
        agent_pay_max 
       ELSE agent_pay_current 
      END 
     ) 
FROM sys_org 
     INNER JOIN trans 
      ON sys_org.mid = trans.mid 
     INNER JOIN sys_pay 
      ON sys_pay.mid = sys_org.mid 
ORDER BY 
     txn_date DESC" 

OR

"SELECT (
      CASE 
       WHEN ((1.00 - sys_pay.org_rate) * trans.txn_amt) < (trans.txn_amt - sys_pay.org_rate_limit) THEN (trans.txn_amt - sys_pay.org_rate_limit) 
       ELSE ((1.00 - sys_pay.org_rate) * trans.txn_amt) 
      END 
     )   agent_pay_return 
FROM sys_org 
     INNER JOIN trans 
      ON sys_org.mid = trans.mid 
     INNER JOIN sys_pay 
      ON sys_pay.mid = sys_org.mid 
ORDER BY 
     txn_date  DESC" 

agent_pay_return将返回值按情况进行检查。

+0

”我无法首先定义agent_pay_current? – Windsooon

+0

为什么你要定义它,我们正在做有条件检查没有别的,所以我们不需要给别名。 – pedram

+0

agent_pay_max和agent_pay_current是我要在模板中使用的别名,而不是字段名称。 – Windsooon

0

MS SQL服务器的限制就是这样

"SELECT TOP 10 (
    CASE WHEN (1.00 - sys_pay.org_rate)*trans.txn_amt as agent_pay_current 
    < (trans.txn_amt - sys_pay.org_rate_limit) as agent_pay_max 
    THEN agent_pay_max 
    ELSE agent_pay_current END) 
    FROM sys_org 
    INNER JOIN trans ON sys_org.mid = trans.mid 
    INNER JOIN sys_pay ON sys_pay.mid = sys_org.mid 
    ORDER BY txn_date DESC" 

而且从之前删除逗号。感谢@rajeshmpanchal

还没有发现另一个问题。

+0

在此行后面不应该有逗号“ELSE agent_pay_current END”,“ – pedram