在SQL中聚合2个表

时间:2013-09-16 20:10:20

标签: sql tsql sybase

我正在使用sybase。

我有两张这样的表:

USER | HITS
------------
 A   |  2
 B   |  1
 C   |  4
 E   |  3


USER | HITS
------------
 A   |  2
 B   |  8
 C   |  1
 D   |  2

我想在USER和SUM HITS列上将它们组合起来得到如下结果:

USER | HITS
------------
 A   |  4
 B   |  9
 C   |  5
 D   |  2
 E   |  3

我能够使用此查询部分地将它们组合在一起:

select a.USERNAME, sum(a.HITS+b.HITS)
from table1 a, table2 b
where a.USERNAME=b.USERNAME
group by a.USERNAME

我不知道该怎么做才能得到我想要的整个数据集......我在尝试使用JOIN或UNION时遇到了麻烦...请帮忙:))

3 个答案:

答案 0 :(得分:4)

试试这个:

SELECT USER, SUM(HITS) HITS
FROM
(SELECT USER, HITS
FROM Tbl1 UNION ALL
SELECT USER, HITS
FROM Tbl2) A
GROUP BY USER

答案 1 :(得分:1)

不确定Sybase是否有with,否则您可以按照哈姆雷特的解决方案嵌套子查询。

;with x (user, hits) as (
    select
        user, hits
    from
        table1
    union all
    select
        user, hits
    from
        table2
)
select
    user,
    sum(hits) as hits
from
    x
group by
    user;

答案 2 :(得分:0)

你没有得到什么样的结果?试试这个,我更喜欢这种格式,因为它很容易阅读

选择a.USERNAME,sum(a.HITS + b.HITS) from table1 a Inner join table2 b on a.username = b.username 由a.USERNAME分组