Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我想连接两个表中的数据,但这次做得不好_Sql_Oracle_Plsql - Fatal编程技术网

Sql 我想连接两个表中的数据,但这次做得不好

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-

嗨,亲爱的,我有一个类似的数据,在上面你可以看到,数据看起来像是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-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,我想我明白了;我发布了固定代码,看看是否有帮助。