将列值设置为 SQL 查询结果中的列名

2023-12-03

我想读取一个表,其中的值将是 sql 查询结果的列名。 例如,我有 table1 作为 ..

id    col1     col2
----------------------
0      name    ax
0      name2   bx
0      name3   cx
1      name    dx
1      name2   ex
1      name3   fx                

如果您看到 id = 0,名称的值为 ax,名称 2 为 bx,名称 3 为 cx。 将列显示为 id、name、name2、name3 会更容易,而不是行。 现在我希望查询的结果如下所示:

id   name    name2     name3
0    ax      bx         cx
1    dx      ex         fx

有人可以帮助我实现这一目标吗?


这是通过一个数据透视表。分组依据id,你发出CASE对于要在列中捕获的每个值的语句并使用类似MAX()聚合以消除空值并折叠为一行。

SELECT
  id,
  /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
  /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
  MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
  MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
  MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM
  yourtable
GROUP BY id
ORDER BY id

这是一个工作示例

注意:这仅适用于有限且已知数量的可能值col1。如果可能值的数量未知,则需要在循环中动态构建 SQL 语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列值设置为 SQL 查询结果中的列名 的相关文章

  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • MySQL连接字符集问题

    我在 Mac 上使用带有 MySQL 的 velosurf 没有任何编码问题 但是当我切换到 Linux 计算机时 从 velosurf 获得的值未正确编码 我发现这可能是默认连接字符集的问题 在 Mac 上我得到 mysql gt sho
  • gem install mysql:无法构建 gem 本机扩展 (Mac Lion)

    我为 Mac OS X Lion 安装了 MySQL 5 5 27 来自 dmg 现在我尝试安装 mysql gem gem install mysql Building native extensions This could take
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤

随机推荐

  • 查询和过滤 MongoDB 中的键名而不是值

    我想从集合中查找部分匹配某个字符串的所有键名称 我得到的最接近的是检查某个密钥是否存在 但这是完全匹配的 db collection find fkClientID exists 1 我想获得所有以fk反而 你可以使用映射减少 要仅获取根级
  • Pyglet 使用过多的 cpu

    我最近开始从 pygame 开始接触 pyglet 和 rabbyt 但我遇到了一些障碍 我创建了一个基本示例 其中一个 Sprite 在 pyglet sprite Sprite 中找到的类型 以每秒 60 帧的速度显示 问题是这个简单的
  • 从 C 中的文本文件加载数字 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想从文本文件 txt 将已知数量的数字加载到 C 语言的数组中 格式为 0 1 2 5 4 我对 C 有点陌生 有人可以推荐一种加载文本文件的方法吗 Cheers 这可以很容易地完
  • 启动包含 C# 参数的命令行

    我需要从我的 C 应用程序启动一个完整的命令行 例如 app exe arg1 1 arg2 true Process Start 和 ProcessStartInfo 需要设置文件名和参数属性 有没有一种方法可以模拟真正的类似 shell
  • KnockoutJS:跟踪菜单点击

    我刚刚开始使用 KnockoutJS 它非常令人着迷 我成功创建了一些模板来渲染界面的两个面板 其中包含 ul 嵌套菜单 这是我的模板
  • WPF:列表框,使所选项目居中

    是否可以始终将所选项目保留在列表框的中间 如果用户选择一个项目 我想滚动以使新选择的项目位于中间 我想 边缘情况 第一个和最后几个项目 是可能的 但没关系 David Anson 在他的博客上发布了一些文章 可能会对您有所帮助 Part 1
  • jquery 将 $(this) 传递给其他函数

    High 我想要做的是 我有一个表 其中的 onclick 附加到驻留在偶数行表中的链接 每个奇数行都被隐藏 单击该链接时 会显示奇数行 并将数据加载到该行中 工作正常 现在我想做的是 每当该过程完成时 我想将一个新的单击功能附加到该链接
  • 修复此 if,else 语句

    问题似乎出在 第 18 行 警告 指针和整数之间的比较第 22 行 错误 else 之前的预期表达式 我究竟做错了什么 有更好的方法吗 include
  • QuickSort 的最坏情况 - 什么时候会发生?

    在分析QS时 大家总是提到 几乎排序 的最坏情况 自然输入什么时候会出现这样的场景 我想到的唯一例子是重新索引 我认为人们混淆了基于分区的排序算法 Quicksort 和各种库实现的 qsort 我更喜欢将快速排序算法视为具有可插入的主元选
  • MIPS32 路由器:内核模块未调用 module_init

    我正在开发一个要在路由器上运行的内核模块 路由器型号为 Netgear 的 DGN2200v2 它在 MIPS 上运行 Linux 2 6 30 我的问题是 当我加载模块时 似乎我的module init没有接到电话 我试图通过修改我的mo
  • Python获取2个日期时间对象之间的整小时值

    我有 2 个日期时间值 开始 和 结束 我想返回恰好位于两者之间 含 之间的所有日期时间的列表 例如 开始 为 09 30 结束 为 14 00 同一天 我想要返回的值是 10 00 11 00 12 00 13 00 14 00 我猜你要
  • Windows 7 上的 Ruby SSL 与 Twitter 在证书 OpenSSL 问题上失败

    我想访问 Twitter 在使用 Net HTTP 的 POST 函数时出现此错误 SSL connect returned 1 errno 0 state SSLv3 read server certificate B certifica
  • 当更新速度太快且需要更新太多数据时,UI 无响应

    我制作了一个控件来将来自不同线程的消息记录到屏幕上 它使用富文本框来显示格式化文本 当有 20 个线程每 200 250 毫秒追加一次消息时 主 UI 会在一段时间内变得无响应 并且在处理等待的消息后 UI 会再次开始响应 当线程运行时 窗
  • 如何在与 Laravel 加密兼容的 C# 中进行加密?

    我想知道如何在 C 中正确加密 Laravel PHP 可以用它的加密解密 这是我的 C 加密 private static readonly Encoding encoding Encoding UTF8 public static vo
  • Java - 如何连接到 Mac OS 上的“复制”和“粘贴”菜单

    我了解您可以 Where CustomMacOSXController implements implements MRJAboutHandler CustomMacOSXController macOSXController new Cu
  • 删除一篇文章并拉入下一页的第一篇文章

    我正在尝试建立一个带有分页系统的博客 例如每页 5 篇文章 分页本身一切都很好 但在每篇文章旁边我都添加了一个 删除 按钮 允许管理员动态删除 jquery 相关文章及其内容 我现在想要的是当我删除一篇文章时 附加 不刷新 下一页的第一篇文
  • 通过反射调用带有可选参数的方法

    我在使用带有可选参数的 C 4 0 时遇到了另一个问题 我如何调用一个函数 或者更确切地说是一个构造函数 我有ConstructorInfo对象 我知道它不需要任何参数 这是我现在使用的代码 type GetParameterlessCon
  • 添加引用对话框缺少 .NET Core 项目中的程序集部分

    我一直在创建我的第一个 NET Core 项目 在本例中 只是一个控制台应用程序 我注意到 当我右键单击依赖关系并选择添加参考 出现的对话框不再包含组件部分 在以前的版本中 此部分将列出所有 Microsoft 程序集并包含每个程序集的一些
  • Sybase BCP 与 MS SQL BCP

    我有一个需要使用的多数据库设置 并且两者都有自己的 bcp 版本 但其行为方式不同 另外 两者都在我的 PATH 中 并且 Sybase 列在 MS SQL exe 之前 因此从命令行调用 bcp 总是会命中 Sybase exe 首先 版
  • 将列值设置为 SQL 查询结果中的列名

    我想读取一个表 其中的值将是 sql 查询结果的列名 例如 我有 table1 作为 id col1 col2 0 name ax 0 name2 bx 0 name3 cx 1 name dx 1 name2 ex 1 name3 fx