mysql / case / when / then

时间:2014-04-10 15:22:13

标签: mysql case

你能帮帮我吗?

我在以下mysql查询中有错误?

SELECT *,
CASE
    WHEN vat = '1' THEN '1.10'
    WHEN vat = '2' THEN '1.21'
END AS _vat,
CASE
    WHEN sleva_kc != '' AND sleva_procent = '' THEN ((cena - sleva_kc) * _vat) 
    WHEN sleva_kc = '' AND sleva_procent != '' THEN ((cena * (1 - (sleva_procent / 100))) * _vat)
    WHEN sleva_kc = '' AND sleva_procent = '' THEN (cena * _vat) END AS _cena
FROM kws_produkty WHERE _cena >= '100' AND _cena <= '500'

我使用mysql连接器:

  • @mysql_connect(HOST,USER,PASS)

说明:

  • 增值税=增值税
  • cena = price
  • sleva_kc =现金折扣金额
  • sleva_procent =折扣金额百分比

我需要输出:

  • _cena =折扣和增值税的价格(折扣可以是百分比或金额,增值税可以更高或更低)

谢谢。

2 个答案:

答案 0 :(得分:0)

你的SQL完全被破坏了。您的case语句位于无法使用的位置,并且您使用的是elseif,但确实有if语句。

SELECT
   CASE .... END CASE,
   IF ... THEN ... ELSEIF ... END IF
FROM yourtable
WHERE ....

我建议您开始阅读语法文档:https://dev.mysql.com/doc/refman/5.0/en/case.html

答案 1 :(得分:0)

您的CASE WHEN ... END表达式应该是字段列表的一部分 - 在FROM - 子句之前。

WHERE - 子句中使用列别名是非法的,请参阅manual

标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。