2016-08-16 68 views
2

我有表有两列,他们都包含整数值,看起来像这样:组合两个SQL列合并到一列

DocumentUpId RelatedDocId 
31608768  31624333 
31608768  31624334 
31618133  31618117 

,我试图将它们合并到像这样的单个列:

DocumentUpId  
31608768   
31608768   
31618133  
31624333 
31624334 
31624334 

我已经试过这样:

select rel_CTE.DocumentUpId + rel_CTE.DocumentDownId as 'RelatedDocId' 
into #temprelations 
from RelationsCTE rel_CTE 

但它给我串连值(以及总和在这种情况下),所以我可能吗?

回答

9

UNION ALL

select rel_CTE.DocumentUpId as 'RelatedDocId' from RelationsCTE 
union all 
select rel_CTE.DocumentDownId from RelationsCTE 
4

尝试这样,

SELECT DocumentUpId as DocumentUpId 
FROM RelationsCTE 

UNION ALL 

SELECT DocumentDownId as DocumentUpId 
FROM RelationsCTE 
+5

'union'不会给出正确的结果,因为它会过滤重复的值。 – sstan

+1

你是对的我编辑我的帖子 – StackUser

+0

不真正理解在合理的时间框架内容易纠正的问题的投票权,这有什么意义?我有+1 +1 – Tanner

0

尝试使用CROSS -APPLY :)一些不同的东西。

SELECT [RelatedDocId] 
FROM RelationsCTE 
    CROSS APPLY (VALUES(DocumentUpId), 
        (DocumentDownId)) V([RelatedDocId])