通过添加计数合并具有公共值的两个表,追加其余值

时间:2011-02-24 17:19:53

标签: sql-server tsql

我有两个表,在运行时创建,它从一些完全不同的表中提取一些数据并加入和复合where子句,最后,我有这两个表的列如下:

TableCars:

Id    Company    Views
```````````````````````
01    Honda        12
32    audi         6
18    BMW          3
17    Vector       5

TableBikes:

Id    Company    Views
```````````````````````
01    Honda        3
32    audi         1
19    Kawasaki     2

注意:
公司名称和ID在这两个表中总是相同的,例如honda = 01

我想合并这两个表,因为我不想在名称(或id)中重复,我希望添加视图。有没有办法做到这一点,而不使用while循环和整个头发脱发?

结果表应该是这样的:

结果表

Id    Company    Views
``````````````````````
01    Honda        15
32    audi         7
18    BMW          3
17    Vector       5
19    Kawasaki     2

非常感谢提前。

ps:我试图检查谷歌,遇到“合并”条款,抬头看看,MSDN是我的头脑。我从不理解MSDN中的任何内容。想知道是否有其他人喜欢我。

2 个答案:

答案 0 :(得分:1)

select id, company, sum(views) views
from
(
select id, company, views
from tablecars
union all
select id, company, views
from tablebikes
) joined
group by id, company

您始终可以将SELECT语句转换为CREATE表语句:

select id, company, sum(views) views
into NewTableName
from
(
select id, company, views
from tablecars
union all
select id, company, views
from tablebikes
) joined
group by id, company

我通常不建议使用此方法来创建永久表。最好创建表并手动定义键,约束,默认值,索引。如果以这种方式创建它,您仍然可以稍后使用ALTER表语句添加所需的键。

如果你总是有两个基表,你需要这个“加入”的数据来查询/报告,它必须与基表保持同步 - 那么你是什么真的是使用第一个SELECT语句的VIEW。

答案 1 :(得分:1)

你可以试试这个:

SELECT company, SUM(views) FROM (SELECT company, views FROM first UNION ALL SELECT company, views FROM second) as t GROUP BY company

如果您有任何问题,请告诉我