合并两列但只包含唯一组合

时间:2018-01-22 23:29:39

标签: sql unique

我有两列,每列都有从不同数据表中引入的标识号。

如果它们不同,我想将它与两个标识号组合成一列,但如果它们相同则只有一个标识号。

我正在使用SELECT DISTINCT CONCAT(column 1, column 2) AS column 3来合并列,但无法过滤掉UNIQUE个组合。

当我尝试WHERE column 1 <> column 2时,收到错误消息。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用CASE WHEN来测试条件:

SELECT DISTINCT CASE WHEN column1 = column2 THEN column1
                     ELSE CONCAT(column1, column2)
                     END AS column3
FROM table1

答案 1 :(得分:0)

尝试使用IIF或CASE和CONCAT

select
distinct
iif(col1<>col2,concat(col1,col2),col1) [myid]
from mytable

select
distinct
case when col1<>col2 then
     concat(col1,col2)
else col1 end [myid]
from mytable

答案 2 :(得分:0)

您应该执行以下操作:

SELECT DISTINCT CASE WHEN column1 = column2 THEN column1
                     ELSE column1 + '|' + column2
                     END AS combinedColumn
FROM table1

考虑以下图表:

column1  column2  column1+column2   column1+'|'+column2
12       34          1234                 12|34
123      4           1234                 123|4
1234     1234        1234                 1234

此外,column1 + column2会丢失一些信息 - 原始部分是什么。