Sql 对3个表中的值求和
我有3个表,每个表将显示用户发布消息的记录 我已经设法计算出每个用户在每个表上发布消息的次数,现在我想为每个用户将这3个单独的值相加 以下是我迄今为止所做的工作: 表USERMESSAGE: 选择U.SenderID,将COUNTU.SenderID作为U\U NUM 从USERMESSAGE作为U 你在哪里美国破产管理人 按U.SenderID分组Sql 对3个表中的值求和,sql,sql-server-2005,Sql,Sql Server 2005,我有3个表,每个表将显示用户发布消息的记录 我已经设法计算出每个用户在每个表上发布消息的次数,现在我想为每个用户将这3个单独的值相加 以下是我迄今为止所做的工作: 表USERMESSAGE: 选择U.SenderID,将COUNTU.SenderID作为U\U NUM 从USERMESSAGE作为U 你在哪里美国破产管理人 按U.SenderID分组 UNION ALL SELECT C.UserID, COUNT(C.UserID) AS NUM FROM COMMENT AS C GROUP
UNION ALL
SELECT C.UserID, COUNT(C.UserID) AS NUM FROM COMMENT AS C GROUP BY C.UserID
UNION ALL
SELECT F.UserID, COUNT(F.UserID) AS NUM FROM FRIENDLIST AS F WHERE F.ListName = 'News Feed' GROUP BY F.UserID
)
GROUP BY UserID
表注释:
选择C.UserID,COUNTC.UserID作为C_NUM
从注释中选择C
按C.UserID分组
表1:
选择F.UserID,COUNTF.UserID作为F_NUM
从好友列表中选择F
其中F.ListName='News Feed'
按F.UserID分组
但并非所有用户都会在所有表中发布,因此某些用户ID不会出现在某些表中 选择UserID,SUM NUM作为总计 从…起 选择U.SenderID作为用户ID,从USERMESSAGE中选择COUNTU.SenderID作为NUM作为U,其中U.SenderID!=U.SenderID的U.ReceiverID组
UNION ALL
SELECT C.UserID, COUNT(C.UserID) AS NUM FROM COMMENT AS C GROUP BY C.UserID
UNION ALL
SELECT F.UserID, COUNT(F.UserID) AS NUM FROM FRIENDLIST AS F WHERE F.ListName = 'News Feed' GROUP BY F.UserID
)
GROUP BY UserID
我想试试这样的
DECLARE @Table1 TABLE(
UserID INT
)
DECLARE @Table2 TABLE(
UserID INT
)
DECLARE @Table3 TABLE(
UserID INT
)
INSERT INTO @Table1 (UserID) SELECT 1
INSERT INTO @Table1 (UserID) SELECT 2
INSERT INTO @Table1 (UserID) SELECT 3
INSERT INTO @Table2 (UserID) SELECT 2
INSERT INTO @Table2 (UserID) SELECT 3
INSERT INTO @Table3 (UserID) SELECT 3
SELECT ISNULL(CountTable1.CountUserIDTable1,0) +
ISNULL(CountTable2.CountUserIDTable2,0) +
ISNULL(CountTable3.CountUserIDTable3,0) CountOverTables,
UserIDs.UserID
FROM (
SELECT DISTINCT
UserID
FROM @Table1
UNION
SELECT DISTINCT
UserID
FROM @Table2
UNION
SELECT DISTINCT
UserID
FROM @Table3
) UserIDs LEFT JOIN
(
SELECT UserID,
COUNT(UserID) CountUserIDTable1
FROM @Table1
GROUP BY UserID
) CountTable1 ON UserIDs.UserID = CountTable1.UserID LEFT JOIN
(
SELECT UserID,
COUNT(UserID) CountUserIDTable2
FROM @Table2
GROUP BY UserID
) CountTable2 ON UserIDs.UserID = CountTable2.UserID LEFT JOIN
(
SELECT UserID,
COUNT(UserID) CountUserIDTable3
FROM @Table3
GROUP BY UserID
) CountTable3 ON UserIDs.UserID = CountTable3.UserID
我收到这个错误消息msg 156,级别15,状态1,第11行关键字“GROUP”附近的语法不正确。对不起,我是SQL新手,我尝试过修改您的代码,但它对我来说太复杂了。它基本上是在第一个子选择中执行的。获取所有不同的用户标识,这将允许您左键加入。然后,剩下的3个子查询将获取每个表的总计。然后将用户标识的不同列表连接到3个表子查询中,并将它们添加到一起。