gpt4 book ai didi

mysql - 如何在 SQL 表中使用条件选择列值作为列名

转载 作者:行者123 更新时间:2023-11-29 01:08:47 27 4
gpt4 key购买 nike

我是 SQL 新手。我有一张“客户”表,它看起来像这样。

enter image description here

我想选择“性别”作为性别列,“年龄”作为年龄列,就像这样。

enter image description here

我已经尝试了几种方法,但它仍然没有显示我需要的东西。请帮助我。

最佳答案

一种方法是使用条件聚合

SELECT name,
MAX(CASE WHEN field = 'Gender' THEN value END) gender,
MAX(CASE WHEN field = 'Age' THEN value END) age
FROM customers
GROUP BY name

另一种方式(如果您只对这两列感兴趣)是

SELECT c1.name, c1.value gender, c2.value age
FROM customers c1 JOIN customers c2
ON c1.name = c2.name
AND c1.field = 'Gender'
AND c2.field = 'Age';

假设每个姓名都存在性别和年龄。事实并非如此,然后使用 OUTER JOIN 而不是像这样的 INNER JOIN

SELECT n.name, c1.value gender, c2.value age
FROM
(
SELECT DISTINCT name
FROM customers
) n LEFT JOIN customers c1
ON n.name = c1.name AND c1.field = 'Gender'
LEFT JOIN customers c2
ON n.name = c2.name AND c2.field = 'Age';

输出:

|   NAME | GENDER | AGE ||--------|--------|-----|| Angela | Female |  28 ||  Davis |   Male |  30 |

这是 SQLFiddle 演示

关于mysql - 如何在 SQL 表中使用条件选择列值作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22587600/

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