gpt4 book ai didi

sql - 将一行转换为列数较少的多行

转载 作者:行者123 更新时间:2023-11-29 12:35:44 25 4
gpt4 key购买 nike

我想在 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;

关于sql - 将一行转换为列数较少的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45201170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com