SQL 在 select 中用 select 创建列,然后用另一列减去它,以创建一个新列
SQL create column with select in select and subtract this with another column, to create a new column
我是 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
现在我想从'amount'(这是需要支付的贡献)中减去'payed'(实际支付)。
我尝试在其他部分引用“付费”并减去它,但如果我是正确的,你不能在 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 函数的小问题,它应该将 'payed' 列中的“null”更改为 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
about isnull,请告知您使用的是哪个数据库。每个数据库对此都有不同的功能。我用它代替了 coalesce 函数,但它可能在您的数据库中不可用。
我是 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
现在我想从'amount'(这是需要支付的贡献)中减去'payed'(实际支付)。
我尝试在其他部分引用“付费”并减去它,但如果我是正确的,你不能在 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 函数的小问题,它应该将 'payed' 列中的“null”更改为 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
about isnull,请告知您使用的是哪个数据库。每个数据库对此都有不同的功能。我用它代替了 coalesce 函数,但它可能在您的数据库中不可用。