我有下表:
| 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列,
我怎么能得到这个结果?有加入吗?
感谢您的评论和回答,我将尝试交叉加入!
答案 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
会出现在结果中。