我想在Postgresql中将单行转换为多行,其中删除了一些列.这是当前输出的示例:
name | st | ot | dt | -----|----|----|----| Fred | 8 | 2 | 3 | Jane | 8 | 1 | 0 | Samm | 8 | 0 | 6 | Alex | 8 | 0 | 0 |
使用以下查询:
SELECT name,st,ot,dt FROM times;
这就是我想要的:
name | t | val | -----|----|-----| Fred | st | 8 | Fred | ot | 2 | Fred | dt | 3 | Jane | st | 8 | Jane | ot | 1 | Samm | st | 8 | Samm | dt | 6 | Alex | st | 8 |
解决方法
SELECT times.name,x.t,x.val FROM times cross join lateral (values('st',st),('ot',ot),('dt',dt)) as x(t,val) WHERE x.val <> 0;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。