雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

Sql语句行转列

2024-07-04 59

在 SQL 中,行转列是指将数据表中具有相同 key 值的多行 value 数据,转换为使用一个 key 值的多列数据,使每一行数据中,一个 key 对应多个 value。行转列完成后,在视觉上的效果就是:表中的总行数减少了,但是列数增加了。

行转列可以使用以下方法实现:

CASE WHEN 语句

使用 CASE WHEN 语句可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:

SELECT
  key,
  CASE
    WHEN key = '语文' THEN value1
    WHEN key = '数学' THEN value2
    WHEN key = '英语' THEN value3
  END AS value
FROM
  table;

这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。

PIVOT 运算符

PIVOT 运算符可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:

SELECT
  key,
  value
FROM
  table
PIVOT(
  SUM(value)
  FOR key IN ('语文', '数学', '英语')
);

这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。

GROUP BY 和 GROUP_CONCAT 函数

GROUP BY 和 GROUP_CONCAT 函数也可以实现行转列。具体做法如下:

SELECT
  key,
  GROUP_CONCAT(value) AS value
FROM
  table
GROUP BY
  key;

这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。

在实际开发中,可以根据具体的需求选择合适的方法实现行转列。

更新于:4个月前
赞一波!

文章评论

评论问答