Sql 如何在同一个表中减去一列和一个alise?
这是我在SQL DBX中执行的查询。但我想在这个查询中进行减法运算,但它不起作用。我想减去Sql 如何在同一个表中减去一列和一个alise?,sql,Sql,这是我在SQL DBX中执行的查询。但我想在这个查询中进行减法运算,但它不起作用。我想减去实际金额和Depri 但在我的问题中,这是行不通的: SELECT b.bank_v_id ,a.venumber ,b.recept_date ,b.dayly_amount ,b.actual_amount ,(DATEDIFF(b.recept_date,'2015-03-09')*b.dayly_amount) "Depri" FROM bank_veh
实际金额
和Depri
但在我的问题中,这是行不通的:
SELECT
b.bank_v_id
,a.venumber
,b.recept_date
,b.dayly_amount
,b.actual_amount
,(DATEDIFF(b.recept_date,'2015-03-09')*b.dayly_amount) "Depri"
FROM
bank_vehicle_master a, tax_details b
WHERE
a.bank_v_id = b.bank_v_id
AND a.del_rec = 0
AND b.del_rec = 0
ORDER BY
a.bank_v_id
输出:
bank_v_id venumber recept_date dayly_amount actual_amount Depri
3 MH 07 Q 1313 17-12-2014 300 30000 -24600
4 MH 07 Q 1414 16-12-2014 150 15000 -12450
5 MH 07 Q 1555 16-12-2014 160 16000 -13280
我想减去上面的两列,即减去actual_amount
和Depri
如何编写查询?引用别名而不是重新编写整个公式肯定是一种很好的做法。使其更易于维护。为此,您需要将减法移到外部查询,否则无法在查询的SELECT子句中引用别名 NoDisplayName的另一个答案也很好地说明了如何使用
内部联接
,而不是旧的逗号式联接
比如说:
SELECT bank_v_id,
venumber,
recept_date,
dayly_amount,
actual_amount
Depri,
actual_amount-Depri AS actualMinusDepri
FROM (
SELECT b.bank_v_id,
a.venumber,
b.recept_date,
b.dayly_amount,
b.actual_amount,
DATEDIFF(b.recept_date,'2015-03-09')*b.dayly_amount AS Depri
FROM bank_vehicle_master a
INNER JOIN tax_details b ON a.bank_v_id=b.bank_v_id
WHERE a.del_rec=0 AND b.del_rec=0
) AS t
ORDER BY bank_v_id
直接使用减法中的
DateDiff
部分
也要使用正确的内部联接
语法,而不是不可读的逗号分隔联接
SELECT b.bank_v_id,
a.venumber,
b.recept_date,
b.dayly_amount,
b.actual_amount,
( Datediff(b.recept_date, '2015-03-09') * b.dayly_amount ) Depri,
b.actual_amount - ( Datediff(b.recept_date, '2015-03-09') * b.dayly_amount ) AS Subtraction
FROM bank_vehicle_master a
INNER JOIN tax_details b
ON a.bank_v_id = b.bank_v_id
WHERE a.del_rec = 0
AND b.del_rec = 0
ORDER BY a.bank_v_id
-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用不受欢迎。这是用于哪种RDBMS的?请添加一个标记,以指定您使用的是mysql
、postgresql
、sqlserver
、oracle
还是db2
——或者其他完全不同的东西。