簡體   English   中英

將兩列合並為一列-SQL

[英]Merge two columns results in one column - SQL

樣本數據 -

CREATE TABLE dbo.#test
(
    id int NOT NULL,
    name varchar (10) NULL,
    name2 varchar (10) null
);

insert into #test values ('1','abc','abc')
insert into #test values ('1','abc','yyy')
insert into #test values ('1','abc','zzz')
insert into #test values ('1','abc','ddd')

select * from #test

現在,我嘗試加入/合並列“名稱”和“名稱2”,然后刪除重復項並顯示如下值-有什么想法嗎?

Name
abc
ddd
yyy
zzz

我需要使用CASE語句完成此操作,即下面的示例代碼。 (盡管這可以通過使用UNION來實現,但我需要使用CASE語句)

select  case 'b'
when 'a'
then name 
when 'b'
then coalesce (name , name2 )
end as NAME from #test

這太糟糕了,實際上應該使用UNION來完成,但是我想這就是您在此示例中追求的:-

select
  case
    when (select count(*) from #test b where b.name = a.name2) > 1 then a.name
    else a.name2
  end as Name
from #test a

確實,您應該有這樣的東西:

select name from #test
union
select name2 from #test

取得預期結果的一種方法是使用Union

而另一種替代方法是-

SELECT id
    ,(
        SELECT max(name1)
        FROM (
            VALUES (name)
                ,(name2)
            ) res(name1)
        ) AS name
FROM #test

結果

id  Name
--------
 1  abc 
 1  ddd
 1  yyy
 1  zzz

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM