在不同表的列中的列中插入值

时间:2018-06-28 14:43:57

标签: sql oracle

我有下表:

|   Cod  |  SKA  |   SKB |   SKC  |
|   AGE  |   1   |   10  |   100  |
|   AUC  |   2   |   11  |   101  |
|   BER  |   3   |   12  |   102  |
|   AGE  |   4   |   13  |   103  |
|   AUC  |   5   |   14  |   104  |
|   BER  |   6   |   15  |   105  |

我想将这些列添加到另一个表中,使其具有以下内容:

|   Cod  |  SKA  |   SKB |   SKC  |
|   AGE  |   1   |   10  |   100  |
|   AGE  |   1   |   11  |   101  |
|   AGE  |   1   |   12  |   102  |
|   AGE  |   1   |   13  |   103  |
|   AGE  |   1   |   14  |   104  |
|   AUC  |   1   |   15  |   105  |
|   AUC  |   2   |   10  |   100  |
|   AUC  |   2   |   11  |   101  |
|   AUC  |   2   |   12  |   102  |
|   AUC  |   2   |   13  |   103  |
|   AUC  |   2   |   14  |   104  |
|   AUC  |   2   |   15  |   105  |
|   ...  |   ... |  ...  |   ...  |
|   ...  |   ... |  ...  |   ...  |
|   ...  |   ... |  ...  |   ...  |

因此,每个Cod,SKB和SKC都按照一个SKA,然后按照第二个,等等。这对于所有SK列,

我怎么能得到这个结果?有加入吗?

编辑

感谢您的评论和回答,我将尝试交叉加入!

2 个答案:

答案 0 :(得分:1)

您可以通过使用cross join将表与其自身连接来实现此目的。但是,由于您的Cod列具有重复的值,因此您可能需要选择distinct行;否则,您将有重复项。

select distinct
    t1.Cod, 
    t2.SKA, t2.SKB, t2.SKC
from
    mytable t1
    cross join mytable t2

请参阅此SQL Fiddle中的示例。

答案 1 :(得分:1)

我认为您希望cross join获得四列的所有组合:

select cod.cod, a.ska, b.skb, c.skc
from (select distinct cod from t) cod cross join
     (select distinct ska from t) a cross join
     (select distinct skb from t) b cross join
     (select distinct skc from t) c ;

您可能需要调整此查询以满足您的需求。您的文字描述了一件事,但是示例数据略有不同。我希望AGE/2会出现在结果中。