【发布时间】:2016-01-10 11:25:38
【问题描述】:
我有两个没有公用键的表我想在没有笛卡尔连接的情况下对这两个表进行连接。 表 1 大约有 40,000 行(记录数在每天的生产中有所不同),而表 2 目前的计数为 80,000 行(记录数在每天的生产中有所不同)。
TABLE1 :- NAME_VALUES
NAME_VAL
--------
TOM
DICK
HARRY
TABLE2 :- CUS_TABLE
CUS_ID
---------
401795480
201134211
137643082
876450821
777290153
111035791
579865552
我想有一些像下面这样的输出
401795480 TOM
201134211 DICK
137643082 HARRY
876450821 DICK
777290153 HARRY
111035791 TOM
579865552 DICK
我的想法是为每个表分配行号。对于表 2,一旦达到表 1 的最大计数,我想重新启动行号,如下所示,但无法弄清楚我该如何执行
Table1
NAME_VAL TABLE1_RN
---------------------
TOM 1
DICK 2
HARRY 3
Table2
CUS_ID TABLE2_RN
--------------------
401795480 1
201134211 2
137643082 3
876450821 1
777290153 2
111035791 3
579865552 1
现在我有了一个键,可以轻松映射以获取我需要的详细信息。
请建议是否有任何方法可以满足我的要求。
【问题讨论】:
-
这不是编程问题。您可以在另一个堆栈成员站点 [dba](dba.stackexchange.com) 上提出这个问题。
-
@davejal:为什么不呢? SQL是图灵完备的编程语言
-
您可能需要的是 ntile 分析函数? docs.oracle.com/cd/B19306_01/server.102/b14200/functions101.htm 或只是 dbms_random.value() 函数:docs.oracle.com/cd/B28359_01/appdev.111/b28419/…。取决于你想要达到的目标。
-
我是这个论坛的新手,我希望通过 SQL 而不是其他编程语言(如 PL/SQL)来执行此操作,因此在此论坛上发布。