Sql 我想连接两个表中的数据,但这次做得不好
嗨,亲爱的,我有一个类似的数据,在上面你可以看到,数据看起来像是3个表T1,T2,T3 我有这样的约会Sql 我想连接两个表中的数据,但这次做得不好,sql,oracle,plsql,Sql,Oracle,Plsql,嗨,亲爱的,我有一个类似的数据,在上面你可以看到,数据看起来像是3个表T1,T2,T3 我有这样的约会 01-01-2021 02-01-2021 03-01-2021 04-01-2021 05-01-2021 06-01-2021 07-01-2021 08-01-2021 09-01-2021 10-01-2021 … 10 rows of 31 11 03-JAN-21 A 12 03-JAN-21 B 13 03-JAN-21 C 11 10-
01-01-2021
02-01-2021
03-01-2021
04-01-2021
05-01-2021
06-01-2021
07-01-2021
08-01-2021
09-01-2021
10-01-2021
…
10 rows of 31
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 04-JAN-21 A
12 04-JAN-21 B
13 04-JAN-21 C
11 05-JAN-21 A
12 05-JAN-21 B
13 05-JAN-21 C
continued...
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 11-JAN-21 B
12 11-JAN-21 C
13 11-JAN-21 A
continued ..
11 19-JAN-21 B
12 19-JAN-21 C
13 19-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
continued so on
T2有这样的数据
01-01-2021
02-01-2021
03-01-2021
04-01-2021
05-01-2021
06-01-2021
07-01-2021
08-01-2021
09-01-2021
10-01-2021
…
10 rows of 31
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 04-JAN-21 A
12 04-JAN-21 B
13 04-JAN-21 C
11 05-JAN-21 A
12 05-JAN-21 B
13 05-JAN-21 C
continued...
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 11-JAN-21 B
12 11-JAN-21 C
13 11-JAN-21 A
continued ..
11 19-JAN-21 B
12 19-JAN-21 C
13 19-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
continued so on
我想要的是这样
01-01-2021
02-01-2021
03-01-2021
04-01-2021
05-01-2021
06-01-2021
07-01-2021
08-01-2021
09-01-2021
10-01-2021
…
10 rows of 31
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
11 03-JAN-21 A
12 03-JAN-21 B
13 03-JAN-21 C
11 04-JAN-21 A
12 04-JAN-21 B
13 04-JAN-21 C
11 05-JAN-21 A
12 05-JAN-21 B
13 05-JAN-21 C
continued...
11 10-JAN-21 B
12 10-JAN-21 C
13 10-JAN-21 A
11 11-JAN-21 B
12 11-JAN-21 C
13 11-JAN-21 A
continued ..
11 19-JAN-21 B
12 19-JAN-21 C
13 19-JAN-21 A
11 20-JAN-21 C
12 20-JAN-21 A
13 20-JAN-21 B
continued so on
我尝试了很多方法,dbfiddle上显示的所有类型的连接可能都是错误的我想要的只是前3个ID重复到下一个日期当下一个日期到来时,它将移动到下一个并在所有日期重复相同的内容,请查看这方面的帮助我非常非常非常感谢你这可以吗?阅读代码中的注释
SQL> with
2 types as
3 -- distinct types
4 (select distinct
5 emp_type,
6 dt_2,
7 nvl(lead(dt_2, 3) over (order by dt_2), dt_2) next_dt_2,
8 row_number() over (partition by dt_2 order by dt_2, emp_id, emp_type) rn
9 from t2),
10 ids as
11 -- distinct IDs
12 (select emp_id, row_number () over (order by emp_id) rn
13 from (select distinct emp_id from t2)
14 )
15 -- final query
16 select i.emp_id,
17 nvl(a.dt, t.next_dt_2) dt,
18 t.emp_type
19 from ids i join types t on t.rn = i.rn
20 left join t1 a on a.dt >= t.dt_2 and a.dt < t.next_dt_2
21 order by 2, 1, 3;
使用
DATE
数据类型存储日期,而不是VARCHAR2
@我存储的内存不是选择remove to char,而是选择simpledt@TheImpaler你们能得到任何答案吗???尊敬的@Littlefoot,像这样,但最后一部分并没有改变,就像前10天,它的A,B,C在表中的日期10,它的B,C,A下一个C,B,A在哪里?我编辑了答案并发布了全部结果。我看不出你在说什么。EM列(在我的表T2中its正在改变)这些ID在10天后改变轮换先是ABC,然后相同的ID在日期10 BCA改变,然后在T2中键入CABEMP_是这样工作的@LittlefootI,我想我明白了;我发布了固定代码,看看是否有帮助。