【发布时间】:2021-10-09 08:56:39
【问题描述】:
假设共有三个表 A、B 和 C
每个表都包含以下属性:
- 表 A:“日期”、“id”、“tv_sales_amt”
- 表 B:“日期”、“id”、“newspaper_sales_amt”
- 表 C:“日期”、“id”、“radio_sales_amt”
使用连接运算符,我试图通过以下方式实现单个表视图:
结果表:
"date", "id", "tv_sales_amt", "newspaper_sales_amt", "radio_sales_amt"
结果表的期望外观:
date id tv_sales_amt newspaper_sales_amt radio_sales_amt
--------------------------------------------------------------------
20190101 012C 2000 1850 NULL
20190102 102D 1000 NULL 1300
.
.
.
以下是我尝试过的一些查询:
查询 #1:
SELECT
A.date, A.id, tv_sales_amt, newspaper_sales_amt, radio_sales_amt
FROM A
INNER JOIN B ON A.id = B.id
INNER JOIN C ON A.id = C.id
使用内部内部连接,我得到重复的值,这是可以理解的,但不是我想要的。
查询 #2:
SELECT
A.date, A.id, tv_sales_amt, newspaper_sales_amt, radio_sales_amt
FROM A
FULL OUTER JOIN B ON A.id = B.id
FULL OUTER JOIN C ON A.id = C.id
由于内连接只会返回与表 A 相交的表 B 和 C(newspaper_sales_amt 和 radio_sales_amt)的结果,因此我尝试了全外连接,希望它能给我提供整个结果的概览,即使它包括空值。
使用我尝试过的两个选项,我都无法获得预期的结果(上面描述的所需外观)。
有人能告诉我我在这里做错了什么吗?
我使用的是最新版本的 SQL Server Management Studio。
我知道,如果我要对tv_sales_amt、newspapers_sales_amt 和radio_sales_amt 进行概述,肯定会有很多空值,但目前没有空值,但有重复。
【问题讨论】:
标签: sql sql-server tsql