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
你这个问题前提条件一定要只有四条数据,你只要重新命名一个行,然后把查询到的值相应赋值即可
可以考虑用GROUP BY
如果是 mssql 列转行造成的这个结果,那么久是在其他列有不同的数据造成无法合并行,如果不是,那就先行转列再列转行
如果不是 mssql ,当我没说
不知道你这个问题是否已经解决, 如果还没有解决的话: