SQL创建列,选择select并使用另一列减去此列,以创建新列

时间:2015-05-25 14:34:04

标签: sql sql-server installation isnull

我是SQL的新手,我对我的代码有疑问,如下所示:

SELECT membernummer, name, c.ammount, c.terms,      
      (select SUM(isnull(amount, 0)) 
       from payments p where m.member_ID = p.member_ID and p.year = c.year) AS payed
From member m 
  INNER JOIN contribution c ON m.member_ID = c.member_ID
where c.year = 2014

现在,我想从“数额”(这是需要支付的费用)中减去“付款”(实际付款)。

我试着提到'所许'在其他部分并减去它,但如果我是正确的,你不能在SQL中引用别名。 我还尝试在select中添加另一个select:

(select SUM(isnull(amount, 0)) 
 from payments p 
 where m.member_ID = p.member_ID 
   and p.year = c.year) - sum(amount) AS 'still to be payed'

这只是给我一个错误。

我的代码中也有一个关于ISNULL函数的小问题,它应该改变'空'在付款的'列到0.但是这样实现它不起作用。

感谢您查看我的代码。如果您需要更多信息,请询问,我对此很新,所以我可能会错过明显的事情。

1 个答案:

答案 0 :(得分:0)

如果我理解得很好,我认为这是你正在寻找的:

SELECT,membernummer, name, c.ammount, c.terms, payed_sum, amount_sum, amount_sum - payed_sum balance
from (
    SELECT membernummer, name, c.ammount, c.terms,
    (select SUM(coalese(amount, 0)) from payments p where m.member_ID = p.member_ID and p.year = c.year) AS amount_sum,
    (select SUM(colasce(payed, 0)) from payments p where m.member_ID = p.member_ID and p.year = c.year) AS payed_sum
    From member m INNER JOIN contribution c ON m.member_ID = c.member_ID where c.year = 2014
) calc

关于isnull,请告知您正在使用的数据库。每个数据库都有不同的功能。我将它替换为合并函数,但它可能在您的数据库中不可用。