如何解决UNION ALL 有 4 张桌子
我对 MSSQL 和全栈开发非常陌生,我想用 4 个不同的表执行 UNION ALL 用于贷款储蓄管理系统 以下代码是我对 4 个表的存储过程,我收到错误
消息 207,级别 16,状态 1,程序 USP_GetLoanSavingsDetailsByLoanTakerId,第 13 行 列名“GetSavings”无效。
消息 207,级别 16,状态 1,程序 USP_GetLoanSavingsDetailsByLoanTakerId,第 13 行 无效的列名“GiveSavings”
这是我的代码,我想实现贷款给一个人,贷款从一个人那里收到,
从一个人那里获得的储蓄和在同一天提供给维持交易的人的储蓄
MemberId
是我接受贷款并向其提供储蓄的人,UserId
是希望向会员提供贷款并获得/向同一个人提供储蓄的人
ALTER PROCEDURE [dbo].[USP_GetLoanSavingsDetailsByLoanTakerId]
(
@MemberId bigint,@UserId bigint
)
AS
BEGIN
--EXEC USP_GetLoanSavingsDetailsByLoanTakerId 5,26
SELECT EntryDate,SUM(LoanGiven) AS LoanGiven,SUM(LoanReceived) AS LoanReceived,SUM(GetSavings) AS GetSavings,SUM(GiveSavings) AS GiveSavings
FROM(
SELECT EntryDate,TotalAmount as LoanGiven,0 as LoanReceived
FROM tblGiveLoan
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,0 as LoanGiven,Amount as LoanReceived
FROM tblReceiveLoan
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,TotalAmount as GetSavings,0 as GiveSavings
FROM tblGetSavings
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,0 as GetSavings,TotalAmount as GiveSavings
FROM tblGiveSavings
WHERE UserId = @UserId and MemberId = @MemberId
) t
GROUP BY EntryDate
ORDER BY EntryDate ASC
END
解决方法
ALTER PROCEDURE [dbo].[USP_GetLoanSavingsDetailsByLoanTakerId]
(
@MemberId bigint,@UserId bigint
)
AS
BEGIN
--EXEC USP_GetLoanSavingsDetailsByLoanTakerId 5,26
SELECT EntryDate,SUM(LoanGiven) AS LoanGiven,SUM(LoanReceived) AS LoanReceived,SUM(GetSavings) AS GetSavings,SUM(GiveSavings) AS GiveSavings
FROM(
SELECT EntryDate,TotalAmount as LoanGiven,0 as LoanReceived,0 as GetSavings,0 as GiveSavings
FROM tblGiveLoan
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,Amount,0
FROM tblReceiveLoan
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,TotalAmount,0
FROM tblGetSavings
WHERE UserId = @UserId and MemberId = @MemberId
UNION ALL
SELECT EntryDate,TotalAmount
FROM tblGiveSavings
WHERE UserId = @UserId and MemberId = @MemberId
) t
GROUP BY EntryDate
ORDER BY EntryDate ASC
END
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。