Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 如何在此查询中用零替换变量_Mysql - Fatal编程技术网

Mysql 如何在此查询中用零替换变量

Mysql 如何在此查询中用零替换变量,mysql,Mysql,我直接根据数据库的相关值从数据库中计算值(成本、折扣、服务费、服务税) 作为这项工作的一部分,我正在动态形成SQL,如下所示 这是我的sql小提琴 我的问题是在计算服务税时,如果尚未计算@sc的值,如何用零(0)代替@sc来计算服务税 您有两个选择 选项1:更改选择方式的顺序,以便在计算@st之前获得@sc,如下所示: SELECT @cst := cost AS cost , @dis := discount_amount AS Discount , @sc := (service_cha

我直接根据数据库的相关值从数据库中计算值(成本、折扣、服务费、服务税)

作为这项工作的一部分,我正在动态形成SQL,如下所示

这是我的sql小提琴

我的问题是在计算服务税时,如果尚未计算@sc的值,如何用零(0)代替@sc来计算服务税

您有两个选择

选项1:更改选择方式的顺序,以便在计算@st之前获得@sc,如下所示:

SELECT @cst := cost AS cost , 
@dis := discount_amount AS Discount ,
@sc := (service_charge/100*((@cst)-(@dis))) AS service_charge ,
@st := (service_tax/100*((@cst)-(@dis)+(@sc))) AS service_tax , 
@vat := VAT AS VAT
FROM Vendor_items
WHERE vendor_items_id = 264
SET @sc = 0;
SELECT @cst := cost AS cost , 
@dis := Discount AS Discount ,
@st := (service_tax/100*((@cst)-(@dis)+(@sc))) AS service_tax , 
@sc := (service_charge/100*((@cst)-(@dis))) AS service_charge ,
@vat := VAT AS VAT
FROM Vendor_items
WHERE vendor_items_id = 264
选项2:使用SET将默认值0设置为@sc变量,如下所示:

SELECT @cst := cost AS cost , 
@dis := discount_amount AS Discount ,
@sc := (service_charge/100*((@cst)-(@dis))) AS service_charge ,
@st := (service_tax/100*((@cst)-(@dis)+(@sc))) AS service_tax , 
@vat := VAT AS VAT
FROM Vendor_items
WHERE vendor_items_id = 264
SET @sc = 0;
SELECT @cst := cost AS cost , 
@dis := Discount AS Discount ,
@st := (service_tax/100*((@cst)-(@dis)+(@sc))) AS service_tax , 
@sc := (service_charge/100*((@cst)-(@dis))) AS service_charge ,
@vat := VAT AS VAT
FROM Vendor_items
WHERE vendor_items_id = 264

您可以将@sc标记为0,如果您将其设置为null,请使用ISNULL函数。这是我的SqlFIDLE,请告诉我如何将其声明为0。我无法更改顺序,我只需要使用选项2,非常感谢。没问题。如果你认为这有帮助,接受答案并结束这个问题。我怎样才能像你初始化@sc=0一样将所有变量初始化为零;我试过这种方法,这是我的是它对你有用不?顺便说一句,这也是后续问题,但你做到了。干得好..不,没用。每个集合分别执行(形成update语句)