[英]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.