Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MYSQL中,是否使用SELECT语句中的变量进行计算?_Mysql_Sql_Select - Fatal编程技术网

在MYSQL中,是否使用SELECT语句中的变量进行计算?

在MYSQL中,是否使用SELECT语句中的变量进行计算?,mysql,sql,select,Mysql,Sql,Select,是否可以使用两列的值在新列中进行计算 查询: SELECT department.id AS 'ID', department.des AS 'Department', CASE department.des WHEN 'Retail Sales' THEN ( IFNULL(SUM(form.amount), 0) + (SELECT SUM(creditnote.amount)

是否可以使用两列的值在新列中进行计算

查询:

SELECT department.id  AS 'ID', 
   department.des AS 'Department',  
   CASE department.des 
     WHEN 'Retail Sales' THEN ( IFNULL(SUM(form.amount), 0) 
                                + (SELECT SUM(creditnote.amount) 
                                   FROM   wf_creditnote AS creditnote 
                                   WHERE  creditnote.status = 'a' 
                                          AND YEAR(creditnote.submittime) = 2013 
                                          AND MONTH(creditnote.submittime) = 11) ) 
     ELSE IFNULL(SUM(form.amount), 0) 
   END            AS 'Actual',
   budget.budget  AS 'Budget'
FROM   (wf_analysis_billcodes AS billcode 
    LEFT JOIN wf_waiving AS form 
           ON form.billcode = billcode.bill_code 
              AND form.status = 'a' 
              AND YEAR(form.sbmt) = 2013 
              AND MONTH(form.sbmt) = 11), 
   wf_analysis AS department, 
   wf_analysis_budgets AS budget 
WHERE  department.id = billcode.dept_id 
   AND department.id = budget.dept_id 
   AND budget.year = 2013 
   AND budget.month = 11 
GROUP  BY department.des 
ORDER  BY department.id ASC 
结果:

+----+------------+--------+--------+ | ID | Department | Actual | Budget | +----+------------+--------+--------+ | 1 | IT | 327 | 200 | | 2 | Finance | 312 | 500 | | 3 | Marketing | 100 | 650 | | 4 | HR | 423 | 320 | +----+------------+--------+--------+
我想通过SELECT语句添加一个百分比列。

将查询转换为子查询,并在主查询中执行计算,方法如下:

SELECT q.*,
       ((Budget-Actual)*100/Budget) AS Percent
FROM (

  ... your query ...

) AS q
演示->

为避免被0除错误,可以使用大小写表达式:

SELECT q.*,
       CASE WHEN Bydget <> 0 
            THEN  ((Budget-Actual)*100/Budget)
            ELSE 0
       END AS Percent
FROM (

  ... your query ...

) AS q

Alter Table-然后更新您想只在视图中获取结果,还是想在表中更新结果?您可以尝试将其添加到SELECT子句中:实际预算*100/预算为Percent@sarwar026仅在视图中,我不想更新表。@AzizShaikh我得到了以下错误:1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第21行使用接近“-Actual*100/Budget AS Percent,其中department.id=billcode.dept_id”,我得到以下错误:1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第25行使用接近“-Actual*100/Budget AS Percent WHERE department.id=billcode.dept_id”的正确语法,我猜您的查询是错误的-例如,您在这里使用引号:作为“Actual”而不是反勾字符,有什么问题吗。请先更正查询中的语法错误,然后重试。一般来说,将任何查询转换为子查询总是有效的,请参见这个简单的示例:->我没有正确地表达查询。现在很好,谢谢。