Sql server SQL Server将4个表中的值合并到一个表中

Sql server SQL Server将4个表中的值合并到一个表中,sql-server,Sql Server,我有5张桌子: 1- UserAccount : Has AccountNumber field 2- Total Amount : Has AccountNumber field 3- Total Withdrawal : Has AccountNumber field 4- Total Profit : Has AccountNumber field 5- Balance : Has AccountNumber field 我需要在一个表中获得每个用户的[总金额]、[总取款]、[总利润]和

我有5张桌子:

1- UserAccount : Has AccountNumber field
2- Total Amount : Has AccountNumber field
3- Total Withdrawal : Has AccountNumber field
4- Total Profit : Has AccountNumber field
5- Balance : Has AccountNumber field
我需要在一个表中获得每个用户的[总金额]、[总取款]、[总利润]和[余额]值,如下所示:

AccountNumber   Balance   Total Amount  Total Withdrawal  Total Profit
----------------------------------------------------------------------------------
201               450           600              150                250
222               600           800              200                150
我使用了此查询,但结果不正确:

SELECT DISTINCT
dbo.useraccount.AccountNumber,
dbo.useraccount.FirstName,
dbo.useraccount.SecondName,
dbo.Balance.Balance,
sum(dbo.[Total Amount].DepositTotal) AS [Total Deposit],
Sum(dbo.[Total Profit].ProfitTotal) AS [Total Profit],
Sum(dbo.[Total Withdrawal].WithdrawalTotal) AS [Total Withdrawal]

FROM
dbo.useraccount ,
dbo.Balance ,
dbo.[Total Amount] ,
dbo.[Total Profit] ,
dbo.[Total Withdrawal]
WHERE
dbo.useraccount.AccountNumber = dbo.Balance.AccountNumber AND
dbo.useraccount.AccountNumber = dbo.[Total Amount].AccountNumber AND
dbo.useraccount.AccountNumber = dbo.[Total Profit].AccountNumber AND
dbo.useraccount.AccountNumber = dbo.[Total Withdrawal].AccountNumber
GROUP BY
dbo.useraccount.AccountNumber,
dbo.useraccount.FirstName,
dbo.useraccount.SecondName,
dbo.Balance.Balance
需要帮忙吗

我得到的结果是这样的:

AccountNumber   Balance   Total Amount  Total Withdrawal  Total Profit
-----------------------------------------------------------------------
201         5316.52    291060.00      86328.20         51150.00
220         35000.00   2086400.00     648000.00        532800.00
221         12000.00   192000.00      44548.00         44548.00
222          8500.00   76500.00       12003.75         12003.75
224          4000.00   484000.00      120780.00        120780.00
226          2393.50   48000.00       5206.50          10736.00
当我对[Total Profit]运行此查询时,我得到了正确的结果:

SELECT DISTINCT
dbo.[Total Profit].AccountNumber,
Sum(dbo.[Total Profit].ProfitTotal) As [Total Deposit]

FROM
dbo.[Total Profit]
GROUP BY
dbo.[Total Profit].AccountNumber

好的,鉴于您尚未发布表定义,您可以这样做以避免行的重复:

SELECT  UA.AccountNumber,
        UA.FirstName,
        UA.SecondName,
        B.Balance,
        TA.DepositTotal [Total Deposit],
        TP.ProfitTotal [Total Profit],
        TW.WithdrawalTotal [Total Withdrawal]
FROM dbo.useraccount UA
LEFT JOIN ( SELECT AccountNumber, SUM(Balance) Balance
            FROM dbo.Balance
            GROUP BY AccountNumber) B
    ON UA.AccountNumber = B.AccountNumber
LEFT JOIN ( SELECT AccountNumber, SUM(DepositTotal) DepositTotal
            FROM dbo.[Total Amount]
            GROUP BY AccountNumber) TA
    ON UA.AccountNumber = TA.AccountNumber
LEFT JOIN ( SELECT AccountNumber, SUM(ProfitTotal) ProfitTotal
            FROM dbo.[Total Profit]
            GROUP BY AccountNumber) TP
    ON UA.AccountNumber = TP.AccountNumber
LEFT JOIN ( SELECT AccountNumber, SUM(WithdrawalTotal) WithdrawalTotal
            FROM dbo.[Total Withdrawal]
            GROUP BY AccountNumber) TW
    ON UA.AccountNumber = TW.AccountNumber

当然,您不需要对每个表进行聚合,只需要对每个AccountNumber具有多行的表进行聚合。

Alias man。别名。结果不正确。。你能多吃点吗?预期的结果是什么,或者有什么问题。别名会使阅读更容易。如果使用隐式联接,则应该进行显式联接。你得到的结果有什么问题。只要你能解释为什么你想要的结果不正确,我就会在我的答案中解释别名。例如,每个用户的总利润显示了一个巨大的数字,我不知道这个数字来自何方!!获取此错误:[Err]42S22-[SQL Server]列名“Balance”无效。@TamerSherif yes,在我的选择中有一个额外的列,现已更正完美!!它起作用了……谢谢你: