我正在尝试进行乘法求和,但似乎无法找出为什么它不起作用。我找到了天数,但现在需要将其乘以每日费用。
任何人都可以帮忙吗?
SELECT `Daily_Charge`, DATEDIFF(End_Date,Start_Date) AS `Total`,
`Total`*Daily_Charge AS `Done` FROM `Car`,`Contract` WHERE `Contract_Id`="1";
您只能在查询的后面的子句中使用别名,而不能在 select 子句本身中使用。采用
SELECT `Daily_Charge`,
DATEDIFF(End_Date,Start_Date) AS `Total`,
DATEDIFF(End_Date,Start_Date) * Daily_Charge AS `Done`
FROM `Car`,`Contract`
WHERE `Contract_Id`='1';
您不能在另一个列定义中使用列别名,您需要再次编写公式:
SELECT `Daily_Charge`, DATEDIFF(End_Date,Start_Date) AS `Total`,
DATEDIFF(End_Date,Start_Date)*Daily_Charge AS `Done`
FROM `Car`,`Contract`
WHERE `Contract_Id`="1"
或者,您可以在子查询中执行公式,并在计算中使用这些列,例如:
SELECT `Daily_Charge`, `Total`, `Total`*Daily_Charge AS `Done`
FROM (SELECT `Daily_Charge`, DATEDIFF(End_Date,Start_Date) AS `Total`,
FROM `Car`,`Contract`
WHERE `Contract_Id`="1") as Source
可以在查询选择列表中使用别名来为列指定不同的名称。您可以在GROUP BY、ORDER BY或HAVING子句中使用别名来引用列:
...标准 SQL 不允许在WHERE子句
中引用列别名。施加此限制是因为在评估WHERE子句时,可能尚未确定列值。 ...
正如其他人已经指出的那样,只需复制datediff
公式即可。