我试图做一个乘法总和,但似乎无法找出它为什么不工作。 我已经找到了天数,但现在需要将此乘以每日费用。SQL乘法查询
任何人都可以帮忙吗?
SELECT `Daily_Charge`, DATEDIFF(End_Date,Start_Date) AS `Total`,
`Total`*Daily_Charge AS `Done` FROM `Car`,`Contract` WHERE `Contract_Id`="1";
我试图做一个乘法总和,但似乎无法找出它为什么不工作。 我已经找到了天数,但现在需要将此乘以每日费用。SQL乘法查询
任何人都可以帮忙吗?
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';
谢谢,几乎在那里:P – Steveo
'+ 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
根据MySQL - Problems with Column Aliases
可以在查询选择列表中使用别名来为列指定不同的名称。您可以使用别名GROUP BY,ORDER BY,或HAVING子句指柱:
...
标准SQL不允许在WHERE 条款列别名引用。施加此限制是因为在评估WHERE子句时,列值可能尚未确定。
...
正如其他人已经指出的那样,只是重复datediff
公式。
汽车与合同之间没有加入条件? –