scr*_*Owl 6 sql sql-server join
我有一个包含员工每月数据的表格,我想进行交叉联接,但前提是确保他们在同一个月内。表看起来像这样:
Month Emp_id
1/1/2017 123
1/1/2017 234
1/1/2017 345
1/1/2017 456
2/1/2017 123
2/1/2017 234
2/1/2017 345
...
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
select *
from t1
cross join t1 as t2
on t1.Month = t2.Month
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
编辑:
详细说明,如果我每个月和 12 个月有 100 名员工,我希望得到一个包含 120,000 行(每个月 100 * 100 笛卡尔,乘以 12(每个月 1 个))的输出表,而不是做一个完整的笛卡尔将是 1,440,000。
是的,它被称为inner join:
select *
from t1 inner join
t1 t2
on t1.Month = t2.Month
Run Code Online (Sandbox Code Playgroud)
您可以使用whereand表达同样的事情cross join,但我认为 aninner join比:
select *
from t1 cross join
t1 t2
where t1.Month = t2.Month;
Run Code Online (Sandbox Code Playgroud)
请注意,您正在使用select *,这意味着您将拥有重复的列名,并且不知道t1它们来自哪个。如果这是一个问题,请提出另一个问题。
| 归档时间: |
|
| 查看次数: |
11537 次 |
| 最近记录: |