从表中选择值作为列标题

2024-01-15

我有一个表“propertyvalues”,如下所示:



ID  FileID  Property  Value
1 x Name 1.pdf
2 x Size 12567
3 x Type application/pdf
4 y Name 2.pdf
5 y Size 23576
6 y Type application/pdf
......
and so on

如何在上表中编写 SQL 查询来获取如下结果


 
FileID  Name     Size      Type
x 1.pdf 12567 application/pdf
y 2.pdf 23576 application/pdf

您没有指定 RDBMS,如果您知道要转换的列数,则可以对值进行硬编码:

select FileId,
  max(case when property = 'Name' then value end) Name,
  max(case when property = 'Size' then value end) Size,
  max(case when property = 'Type' then value end) Type
from yourtable
group by FileId

这基本上是一个PIVOT函数,一些 RDBMS 会有一个PIVOT,如果您这样做,那么您可以使用以下内容,PIVOT在 SQL Server、Oracle 中可用:

select *
from 
(
  select FileId, Property, Value
  from yourTable
) x
pivot
(
  max(value)
  for property in ([Name], [Size], [Type])
) p

如果要转换的列数未知,则可以使用动态PIVOT。这获取要在运行时转换的列的列表:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(property) 
                    from yourtable
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
             (
                select FileId, Property, Value
                from yourtable
            ) x
            pivot 
            (
                max(value)
                for Property in (' + @cols + ')
            ) p '

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

从表中选择值作为列标题 的相关文章

  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 更改列时快速删除并重新创建多个索引、视图、统计信息

    我的 项目 表中有一个 StoreNumber 列 我想将其更改为 NOT NULL 我最近清理了所有旧数据 以便不存在空条目 但是 当我执行以下语句时 由于对各种视图 索引和统计信息的多重依赖 它失败了 ALTER TABLE Proje
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • st_intersects 与 st_overlaps

    这两个查询有什么区别 select a gid sum length b the geom from polygons as a roads as b where st intersects a the geom b the geom gr
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 解析带下划线的 SQL Server 数字文字

    我想知道它为什么有效以及为什么它不返回错误 SELECT 2015 11 Result 11 2015 第二种情况 SELECT 2 1 a a 2 1 检查元数据 SELECT name system type name FROM sys
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • 同时从2个表中删除?

    我正在使用 asp net 和 sql 服务器 我有 2 个表 类别和产品 在产品表中 我的categoryId 为FK 我想要做的是 当我从类别表中删除类别时 我希望该类别中的所有产品都将在产品表中删除 如何才能做到这一点 我更喜欢使用存
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q
  • 想要编写依赖于 SQL Server 表的所有对象的脚本

    查看依赖关系 显示依赖于 SQL Server 中的表的所有对象 现在 我如何使用 SSMS 在一个命令中编写所有这些对象的脚本 有没有免费的工具可以做到这一点 首先你可以尝试这个链接了解 SQL 依赖关系 http msdn micros
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR

随机推荐

  • 如何在Java中扩展final类

    这是我现在面临的实际问题 我有课 比方说Foo这个类定义了一个名为的方法getBar返回一个Bar实例 班上Bar被定义在里面Foo并且 并 被声明public static final 我想做的是定义一个类MyFoo延伸Foo但我也想延长
  • SQL简单减法查询

    我有一个数据库 它包含 2 个表 让我将它们称为表 A 和表 B 表A内容 Date 供应商名称 交付货物名称 交付的货物数量 简单地说是成分 A 数值 表B内容 生产日期 产品名称 成分 A 我真正想要的是 使用表 A 第 4 列减去 减
  • “Options”属性的默认值无法绑定到特定线程

    我发现当我改变班级时 public class MarkdownEditorOptions ObservableObject to public class MarkdownEditorOptions INotifyPropertyChan
  • 插入图像/PNG ggplot2 - Cowplot

    我正在尝试使用cowplot包draw image 功能 我已经设法在图表中获取图像作为示例 我无法弄清楚 xy 位置是如何工作的 我必须不断输入随机数 直到看到图像 require ggplot2 required packages re
  • 更改 Visual Studio 2008 项目中文件夹中整个文件的属性

    我通过从资源管理器中拖放来向我的 Visual Studio 2008 项目添加一个文件夹 我想将该文件夹中整个文件的 复制到输出目录 属性更改为 始终复制 问题是该文件夹包含许多子文件夹 子文件夹也是如此 因此 无法一步阻止所有文件并更改
  • MongoDB 查找精确数组匹配但顺序并不重要

    我正在查询查找精确的数组匹配并成功检索它 但是当我尝试查找具有不同顺序的值的精确数组时 它会失败 Example db coll insert user harsh hobbies 1 2 3 db coll insert user kau
  • 使用 Selenium WebDriver 将鼠标悬停并单击隐藏元素

    当我开始使用 Selenium 时 我发现很难对隐藏元素执行操作 悬停 单击等 这些元素只有在悬停在其他元素上时才可见 所以我希望这对其他人有帮助 您可以使用以下任何一种方法 例如 要upvote此页面中的评论 我需要将鼠标悬停在上下文 即
  • Google API - 如何将 URL 重定向到我的本地主机

    我正在努力使用 Google OAuth 将 google 登录集成到我的 Phonegap 应用程序中 发生的情况是 在为我的应用程序创建客户端 ID 时 我必须选择 已安装的应用程序 然后将应用程序类型选择为 其他 因为我是使用 Pho
  • 可用的游戏网络协议定义语言和代码生成

    我一直在寻找一个好的通用二进制网络协议定义框架 以提供一种用多种语言 例如 Java 后端服务器和 iPhone 前端 编写实时游戏服务器和客户端 例如 魔兽世界 或 雷神之锤 III 的方法用 Objective C 和 Cocoa 编写
  • 从本地文件访问 localStorage

    我正在创建 2HTML文件将存储在本地 iPhone 上并通过WebView 我想知道是否可以设置localStorage在一个文件中 并从另一个文件中获取存储结果 我知道localStorage可以从同一域上的文件访问 但是 您似乎无法从
  • Docker /var/lib/docker/overlay2//merged:没有这样的文件或目录

    我收到以下错误并且找不到任何解决方案 9 builder 3 5 COPY app 9 sha256 deb3e9c3d0d018c2253369e84f48bc653a4796eebadd10de1a2bb60b4954e239 9 ER
  • minwindef.h 中的 IN 和 OUT 宏

    这些在 minwindef h 中定义 通常位于 Program Files x86 Windows Kits 8 1 Include shared minwindef h ifndef IN define IN endif ifndef
  • 为什么 C++ 将 unsigned char 值打印为负数?

    我试图理解 C 中的隐式转换规则 并且我理解当两个主要类型之间存在一个操作时 较低类型 将提升为 较高类型 因此可以这样说 int a 5 float b 0 5 std cout lt lt a b lt lt n 应该打印 5 5 因为
  • 静态上下文无法访问收集器中的非静态上下文

    我有一群学生 首先 我想按标记对它们进行分组 然后我想进一步将这些集合分组为同名学生 Map
  • 并发代码分析器

    我想知道是否有任何框架或应用程序 app 程序可以分析任何java代码的并发性 如果该工具知道 jre 提供的类和方法的所有实现 那么它就可以归结为对同步块和方法及其调用层次结构的简单分析 从这里它可以创建一个 Petri 网并确定地告诉您
  • 作为线程调用耗时的 JNI 任务

    我在从线程使用 JNI 调用本机函数时遇到了一个棘手的问题 本机函数是执行计算密集型任务的遗留代码 由于我不想冻结程序的其余部分 因此计算应该在后台线程中执行 EventBus https eventbus dev java net 用于将
  • 将 Android Studio 更新到版本 1.3.0 后,我收到“当前插件中不推荐使用 NDK 集成”错误

    我已将 Android Studio 更新到版本1 3 03天前 在此之前我可以使用 NDK 但现在我收到如下错误 错误 50 0 错误 当前插件中不推荐使用 NDK 集成 考虑尝试新的实验性插件 详细信息请参见http tools and
  • 使用动态文件名读取存储在资源文件(resx)中的字符串

    在我的 C 应用程序中 我需要创建一个为每个客户定制的字符串的 resx 文件 我想要做的是避免每次必须向客户提供应用程序时重新编译整个项目 因此我需要动态访问该字符串 那么 如果我仅在执行时知道文件名 如何 在应用程序执行期间 访问 re
  • 如何停止 PHP 循环

    我试图弄清楚是否可以停止 PHP 中的 foreach 循环 如下所示 arr array Joe Jude James Pitch Tim i 0 foreach arr as val echo val if i 2 Stop loopi
  • 从表中选择值作为列标题

    我有一个表 propertyvalues 如下所示 ID FileID Property Value 1 x Name 1 pdf 2 x Size 12567 3 x Type application pdf 4 y Name 2 pdf