报表记录在多个系统中



在SQL中工作时,我有一个源系统和有访问权限的人的ID的数据集,简化后如下:

系统1系统2系统1
系统 ID
sys2
create table mytable (Systems varchar(50),ID varchar(20));
insert into  mytable values('Sys1','A');
insert into  mytable values('Sys2','A');
insert into  mytable values('Sys1','B');
insert into  mytable values('sys2','C');

查询:

select ID, sum(case when Systems='Sys1' then 1 else 0 end)Sys1,
sum(case when Systems='Sys2' then 1 else 0 end)Sys2
From mytable
Group by ID

输出:

ID Sys1 Sys2
A 1
B 1 0
C 0 1

如果它仅限于少数系统值,则可以使用以下查询:

select
ID
, MAX(case when system = 'Sys1' then 1 else 0 end) Sys1
, MAX(case when system = 'Sys2' then 1 else 0 end) Sys2
, MAX(case when system = 'Sys3' then 1 else 0 end) Sys3
, MAX(case when system = 'Sys4' then 1 else 0 end) Sys4
, ....
from table
GROUP BY ID

如果您正在使用Spark,为什么不利用它的强大功能呢。读取数据帧中的数据,然后使用:df.groupBy(col("ID")).pivot(col("System")).count().na.fill(0).show()

最新更新