将列用作位置并在其中减去

时间:2019-01-23 07:47:53

标签: sql sql-server

我的问题是我只想显示所有未支付的行:

我有此数据:

id   name      commission    paid
1    James     15000         2000
2    Curry     15000         15000
3    Durant    15000         0
4    Wade      15000         5000
5    Harden    15000         15000

我只想获取不等于0的行,如果commission - paid大于0,我想使用where子句

我期望的输出是:

id   name      commission    paid
1    James     15000         2000
3    Durant    15000         0
4    Wade      15000         5000

3 个答案:

答案 0 :(得分:2)

您可以通过对WHERE进行简单计算来使用以下解决方案:

SELECT * FROM table_name WHERE commission - paid > 0

您还可以使用以下内容:

SELECT * FROM table_name WHERE commission > paid

注意:在这种情况下,有人可以多付佣金。使用!=<>会发现多付未支付。

  

演示: https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=a391576f2df2c5d7c8616485b2c70099


要获取所有付费行,您可以使用以下代码:

SELECT * FROM table_name WHERE commission - paid <= 0

或...

SELECT * FROM table_name WHERE commission <= paid

答案 1 :(得分:2)

SELECT * FROM table_name WHERE (commission - paid) > 0

SELECT * FROM table_name WHERE commission!=paid

这也是可行的,因为减法将大于零或大于零(假设支付的金额始终小于佣金)

答案 2 :(得分:1)

您可以使用下面通过WHERE子句给出的以下查询

SELECT * FROM commision_table_name WHERE (commission - paid) > 0;