SQL中如何将多个字段中的数据根据匹配条件集合在一行中
先通过(case when ' ' then else ('') end) ,将tin,uin,bin,cin数据行转列,转换完后每个字段匹配数据都单独属于一行,数据不是数字无法用sum求和
id字段为匹配条件,id字段相同的数据只保留一条,将tin,uin,bin,cin字段数据集合在一行中
如下效果
想到一个比较麻烦的方法将tin,uin,bin,cin字段都单独写成子表,在将每个子表的id进行关联,主表查询每一个子表中的一个字段,在使用IS NOT NULL将每个子表查询出结果是空值的行删除。
select distinct c.id,
q.tin,
w.uin,
e.bin,
r.cin
from( 子表q,子表w,子表e,子表r,原表c)
where c.id=q.id
and q.id=w.id
and w.id=e.id
and e.id=r.id
and q.tin IS NOT NULL
and w.uin IS NOT NULL
and e.bin IS NOT NULL
and r.cin IS NOT NULL