【问题标题】:INNER JOIN showing boths columnsINNER JOIN 显示两列
【发布时间】:2021-10-09 20:32:43
【问题描述】:

我有两张包含 Covid-19 数据(死亡和病例)的表格。

案例

date region age_group sex cases
data data data data data

死亡

date region age_group sex deaths
data data data data data

我正在汇总数据以按地区获取每日病例和死亡人数,并尝试将其插入到一个具有四列(日期、地区、cases_per_day、deaths_per_day)的新表中。我尝试了以下方法来聚合和加入数据。

SELECT * FROM
((SELECT date, region, SUM(cases) AS cases_per_day 
FROM dbo.COVID19BEl
GROUP BY date, region) sub
INNER JOIN 
(SELECT date, region, SUM(deaths) AS deaths_per_day 
FROM dbo.DEATHSBE
GROUP BY date, region) c 
ON c.date = sub.date AND c.region = sub.region)

但它正在返回:

date region cases_per_day date region deaths_per_day
data data data data data data

想要的输出是:

date region cases_per_day deaths_per_day
data data data data

【问题讨论】:

  • 尝试从以下位置删除日期和地区:(SELECT date, region, SUM(deaths) AS death_per_day
  • 我已将此问题标记为“由拼写错误引起”,因为它是一个基本的 SQL 错误。 INNER JOIN 包括两个表中的所有列。您正在使用 SELECT * 选择所有列。要从其中一张表中排除 dateregion 列,您需要更改 SELECT 子句。 SELECT sub.date, sub.region, cases_per_day, deaths_per_day FROM....
  • 这是否回答了您的问题:How to remove duplicate columns from join in SQL?
  • 是的,我是 SQL 新手。谢谢你的回答。

标签: sql sql-server group-by inner-join


【解决方案1】:

只选择您需要的列:

SELECT
    sub.date , sub.region , sub.cases_per_day , c.deaths_per_day
FROM
((SELECT date, region, SUM(cases) AS cases_per_day 
FROM dbo.COVID19BEl
GROUP BY date, region) sub
INNER JOIN 
(SELECT date, region, SUM(deaths) AS deaths_per_day 
FROM dbo.DEATHSBE
GROUP BY date, region) c 
ON c.date = sub.date AND c.region = sub.region)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 2017-09-16
    • 2013-12-05
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多