我有一张这样的表:
Col1 Col2 Col3 Col4 Col5
==== ==== ==== ==== ====
A1 B1 C1 null null
A1 null C1 null E1
A1 B2 null D1 E2
A1 null C2 null E2
我如何合并信息以便最终得到:
Col1 Col2 Col3 Col4 Col5
==== ==== ==== ==== ====
A1 B1 C1 null E1
A1 B2 C2 D1 E2
什么 SQL 会为我做这件事?请注意,两个 C1 允许合并前两行,而两个 E2 允许合并最后两行。
最佳答案
希望这有帮助..
CREATE TABLE #LocalTempTable(
col1 varchar(50) ,
col2 varchar(50) NuLL,
col3 varchar(50) NuLL,
col4 varchar(50) NuLL,
col5 varchar(50) NuLL)
insert into #LocalTempTable values ( 'A1', 'B1','C1',NULL,NULL);
insert into #LocalTempTable values ( 'A1', NULL,'C2',NULL,'E1');
insert into #LocalTempTable values ( 'A1', 'B2',NULL,'D1','E2');
insert into #LocalTempTable values ( 'A1', NULL,'C2',NULL,'E2');
select * from #LocalTempTable
--A1 B1 C1 null E1
--A1 B2 C2 D1 E2
select *from(
select ROW_NUMBER() over ( order by lc1.col1 ) as ID ,
lc1.col1
,lc1.col2
,lc1.col3
,lc1.col4
,lc2.col5
from #LocalTempTable lc1 inner join #LocalTempTable lc2 on lc2.col1=lc1.col1 ) as c where ID=5
union
select *from(
select ROW_NUMBER() over ( order by lc1.col1 ) as ID ,
lc1.col1
,isnull(lc1.col2,lc2.col2) as col2
,isnull(lc2.col3,lc1.col3) as col3
,isnull(lc1.col4,lc2.col4) as col4
,lc2.col5
from #LocalTempTable lc1 inner join #LocalTempTable lc2 on lc2.col1=lc1.col1 ) as c where ID=10
关于sql - 如何根据公共(public)值合并数据库行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879235/