我有一个大数据视图。对于包含相关信息的两列,我想折叠数据,所以我没有空白。一个例子可能会更好地表明我的意思。
ID Title Column1 Column2
-11 Row1 NULL Anna
-11 Row1 Lars NULL
-10 Row2 NULL Thomas
-9 Row3 Paul NULL
-7 Row4 Gerald NULL
-6 Row5 NULL Micha
-6 Row5 NULL Hans
-6 Row5 NULL Robert
-6 Row5 Rene NULL
-6 Row5 Olga NULL
-6 Row5 Markus NULL
-6 Row5 Klaus NULL
-6 Row5 Sascha NULL
我想要删除空白,所以看起来像这样:
ID Title Column1 Column2
-11 Row1 Lars Anna
-10 Row2 NULL Thomas
-9 Row3 Paul NULL
-7 Row4 Gerald NULL
-6 Row5 Rene Micha
-6 Row5 Olga Hans
-6 Row5 Markus Robert
-6 Row5 Klaus NULL
-6 Row5 Sascha NULL
感谢您的帮助!
答案 0 :(得分:1)
declare @t table (ID int, Title varchar(10), Column1 varchar(10), Column2 varchar(10))
insert @t select
-11 ,'Row1', NULL ,'Anna' union all select
-11 ,'Row1', 'Lars' , NULL union all select
-10 ,'Row2', NULL ,'Thomas' union all select
-9 ,'Row3', 'Paul' , NULL union all select
-7 ,'Row4', 'Gerald', NULL union all select
-6 ,'Row5', NULL ,'Micha' union all select
-6 ,'Row5', NULL ,'Hans' union all select
-6 ,'Row5', NULL ,'Robert' union all select
-6 ,'Row5', 'Rene' ,NULL union all select
-6 ,'Row5', 'Olga' ,NULL union all select
-6 ,'Row5', 'Markus' ,NULL union all select
-6 ,'Row5', 'Klaus' ,NULL union all select
-6 ,'Row5', 'Sascha' ,NULL
-- the above merely sets up a table variable @t. Replace @t in the below portion
-- with your table name. Below is the actual query
;with a as (
select *,
rn1=row_number() over (partition by title order by column1)
from @t
where column1 is not null
), b as (
select *,
rn2=row_number() over (partition by title order by column2)
from @t
where column2 is not null
)
select a.id, a.title, a.column1, b.column2, *
from a
full join b
on a.title = b.title and a.rn1=b.rn2
where coalesce(a.column1, b.column2) is not null
order by coalesce(a.title, b.title), a.rn1, b.rn2
答案 1 :(得分:-1)
select id, title, column1, column2
from my_view
where column1 is not null and column2 is not null
union
select max(id) as id, max(title) as title, column1, column2
from my_view as v1
inner join my_view as v2 on v1.id = v2.id
where column1 is null or column2 is null
group by column1, column2
order by id, title, column1, column2