使用多列交叉应用动态 SQL 逆透视数据

2024-02-02

微软 SQL Server Management Studio v18.8

我有一个表,其中有不同的列和列名称。我需要对数据进行逆透视,以便最终可以将其存储到另一个表中。不幸的是,这是一个过程,因为原始表格是从 Google 表格中提取的。

我在这里查找了几篇文章和答案,但无法成功复制其中任何一篇。我需要根据项目、时间戳和位置进行逆透视。那么 Q1、Q2、Q3 等应该不旋转。下面是一个示例表和查询,它将获得我想要的结果。任何在动态 SQL 中获取此信息以便将来添加/修改列的帮助将不胜感激。我愿意使用 UNPIVOT 或任何其他功能来获得所需的结果。实际的数据源将是永久表,而不是临时表。

创建表

DROP TABLE IF EXISTS #test
CREATE TABLE #test (Item VARCHAR(16), Timestamp DATETIME, Location VARCHAR(2), Q1 VARCHAR(3), Q2 VARCHAR(3), Q3 VARCHAR(3))
INSERT INTO #test VALUES('Stapler','2021-04-14 12:00:00.000', 'US','Yes','No','Yes'),
                        ('Paper','2021-04-10 16:00:00.000', 'CA','No','Yes','Yes'),
                        ('Pen','2021-04-06 15:00:00.000','MX','Yes','Yes','No')

使用交叉应用取消透视

 SELECT A.Item,
           A.Timestamp,
           A.Location,
           B.*
      FROM #test AS A
    CROSS APPLY
    (
     VALUES ('Q1', A.Q1),
            ('Q2', A.Q2),
            ('Q3', A.Q3)
    ) B (Question,Answer)

您可以使用一些 JSON 来动态反转数据。如果不是 2016+...还有类似的 XML 方法。

Example

Select A.Item
      ,A.Timestamp
      ,A.Location
      ,B.*
 From  #test A
 Cross Apply (
                Select Question = [Key]
                      ,Answer   = [Value]
                 From OpenJson((Select A.* For JSON Path,Without_Array_Wrapper,INCLUDE_NULL_VALUES  ) ) 
                 Where [Key] not in ('Item','Timestamp','Location')
             ) B

Results

编辑 - XML 版本更新

Select A.Item
      ,A.Timestamp
      ,A.Location
      ,C.*
 From  #test A
 Cross Apply ( values ((Select A.* for XML RAW,Type)) )B(XMLData)
 Cross Apply (
                Select Question = xAttr.value('local-name(.)', 'varchar(100)')
                      ,Answer   = xAttr.value('.','varchar(max)')
                 From XMLData.nodes('//@*') xNode(xAttr)
                 Where xAttr.value('local-name(.)', 'varchar(100)')  not in ('Item','Timestamp','Location')
             ) C
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用多列交叉应用动态 SQL 逆透视数据 的相关文章

  • 可以有一个带有可变列的表吗?

    这可能是一个愚蠢的问题 但这里是 是否可以创建一个能够包含具有可变列数和自定义列名称的行的动态表 我浏览过 EAV 建模 但看起来很沉重 现实生活中的例子可能是这样的 假设我有一个客户登记册 但每个客户可能需要输入不同的信息 根据您要输入的
  • 如何创建没有循环关系的树形表?

    CREATE TABLE TREE node1 id UUID REFERENCES nodes object id NOT NULL node2 id UUID REFERENCES nodes object id NOT NULL CO
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • 告诉我 SQL Server 全文搜索器疯了,不是我疯了

    我有一些客户具有用户正在搜索的特定地址 123 通用方式 数据库中有 5 行匹配 ResidentialAddress1 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC
  • 多边形内的 SQL 地理点在 STIntersect 上不返回 true(但使用 Geometry 返回 true)

    我不想仅仅为了在 STIntersect 中返回 true 而将地理数据转换为几何图形 下面是 SQL 中的代码 DECLARE point GEOGRAPHY GEOGRAPHY Point 1 1 4326 DECLARE polygo
  • SQL查询json字典数据

    我的表中的 CLOB 字段包含 JSON 如下所示 a value1 b value2 c value3 我正在尝试编写一个 SQL 查询来返回一个包含键和值字段的表 如下所示 key value a value1 b value2 c v
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • PostgreSQL函数中sql语言和plpgsql语言的区别

    我很新数据库开发所以我对下面的例子有一些疑问 函数 f1 语言 SQL create or replace function f1 istr varchar returns text as select hello varchar istr
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • hive - 在值范围之间将一行拆分为多行

    我在下面有一张表 想按从开始列到结束列的范围拆分行 即 id 和 value 应该对开始和结束之间的每个值重复 包括两者 id value start end 1 5 1 4 2 8 5 9 所需输出 id value current
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • SQL Server 文件操作?

    使用 SQL Server 2005 如何使用 T SQL 将文件读入 SPROC 所以 假设我有一个像这样的 CSV 文件 ID OtherUselessData 1 asdf 2 asdf 3 asdf etc 我基本上想这样做 Sel
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0

随机推荐

  • CSS 文本转换“昂贵”吗?

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Is CSS text transform加工成本高吗 在我看来 浏览器被迫做一些通常不需要的工作 如果你没有转型 但是这是一个很大的
  • 将参数传递给 django admin 中的内联表单

    我有一个继承自 ModelAdmin 的管理类 class TemplateAdmin admin ModelAdmin inlines TemplateAttributeInline CompanyAttributeInline list
  • 什么是 ng-transinclude?

    我在 StackOverflow 上看到了很多讨论 ng transclude 的问题 但没有一个问题能通俗地解释它是什么 文档中的描述如下 标记使用嵌入的最近父指令的嵌入 DOM 的插入点的指令 这相当令人困惑 有人能够用简单的术语解释
  • 将两个原始值转换为 32 位 IEEE 浮点数

    我正在尝试通过 TCP modbus 解码来自 Shark 100 功率计的一些数据 我已经成功地拉下了我需要的寄存器 并从寄存器中留下了两个原始值 如下所示 17138 59381 从手册中 我知道我需要将这两个数字转换为32位IEEE浮
  • HTTP 响应如何找到正确的浏览器窗口?

    如果您打开了两个浏览器窗口 并且使用每个窗口导航到不同的网站 那么软件如何知道哪个 HTTP 响应属于哪个浏览器实例 Update 看来是通过入站 TCP 端口号来区分的 但是不涉及 TCP UDP 的网络消息又如何呢 例如 如果您打开两个
  • 在 GKE 上进行活动/就绪探测检查时,Kubelet 会定期丢失与 pod 的 TCP 连接

    我们在单个 GKE 谷歌 kubernetes 引擎 集群节点中部署了一个软件系统 该节点使用大约 100 个 pod 在每个 pod 中我们定义了 TCP 就绪探针 现在我们可以看到就绪探针定期失败 并显示Unable to connec
  • OS X 中每个 WebView 都有单独的 cookie jar

    我一直在努力实现在 macOS 中为每个 WebView 拥有一个唯一 非共享 cookie jar 的目标 iOS 的 cookie 管理工作方式不同 在阅读了大量 StackOverflow 问题并深入研究文档后 我在这些文章中找到了最
  • 在 Expression 中注入 TDelegate 的参数值并减少表达式

    我需要减少一个表达式 Expression
  • numba @jit 比纯 python 慢吗?

    所以我需要改进我一直在处理的脚本的执行时间 我开始使用 numba jit 装饰器来尝试并行计算 但是它让我困惑 KeyError Does not support option parallel 所以我决定测试 nogil 是否解锁了我的
  • 在 Cloud Spanner 中存储 UUID

    我想在 Cloud Spanner 中使用 UUID 作为主键 读写 UUID 的最佳方式是什么 是否有 UUID 类型或客户端库支持 最简单的解决方案是将其存储为标准中的 STRINGRFC 4122 https www rfc edit
  • Java - 等待第三方线程完成

    我有一个线程将运行第三方库 该第三方库也将运行自己的线程 当我的线程的 run 方法完成时 第三方线程还没有完成 那么 在这些外部线程仍在运行之前保持线程的最佳方法是什么 If你是一个应用程序 不必担心SecurityManager的限制
  • 使用按位运算将 Int 转换为 Float 或 Float 转换为 Int(软件浮点)

    我想知道您是否可以帮助解释将整数转换为浮点数或将浮点数转换为整数的过程 对于我的课程 我们将仅使用按位运算符来完成此操作 但我认为对从类型到类型的转换的深入理解将在这个阶段对我有更多帮助 据我所知 到目前为止 对于 int 到 float
  • 捕获 VPN 使用统计数据

    我们正在使用 NET 2 0 中的 NetworkInterface GetIPv4Statistics 来监视网络接口的使用统计信息 这不会报告 VPN 流量通过隧道传输的连接的正确统计信息 相反 对于 Cisco VPN 客户端 其使用
  • 编译器优化掉的变量

    我开始调试一些代码试图找出我的错误 当我尝试p tlEntries从调试器我得到
  • 将 decltype 与成员函数指针结合使用

    我使用时遇到一些问题decltype对于成员函数指针 include
  • 转义 findstr 搜索字符串中的引号

    使用 findstr exe 时如何正确转义搜索字符串中的引号 Example findstr misc namespace cs gt ns txt 这会输出到控制台 而不是我指定的文件 我直接在命令行上执行此操作 而不是实际上在批处理文
  • 在 NHibernate 中删除对象时,“not-null 属性引用 null 或瞬态值”

    我创建了一个 MVC 4 并使用 NHibernate 来持久化模型并使用 Fluent nhibernate 映射它 该实体有一个 Name 属性 并按如下方式映射 Map x gt x Name Not Nullable Length
  • Cocoapods Firebase Pod 更新

    早上好 我在更新 Firebase Analytics 和 Firebase Core pod 时遇到问题 我的 Pod 文件 source https github com CocoaPods Specs git source https
  • 写入易失性变量后会发生什么?

    我想知道写入易失性变量是否会强制jvm将所有非易失性变量同步到内存 例如 以下代码中会发生什么 volatile int x int y y 5 x 10 x 将被写入内存 但是 y 会发生什么 它也会被写入内存吗 是的 根据规则Java
  • 使用多列交叉应用动态 SQL 逆透视数据

    微软 SQL Server Management Studio v18 8 我有一个表 其中有不同的列和列名称 我需要对数据进行逆透视 以便最终可以将其存储到另一个表中 不幸的是 这是一个过程 因为原始表格是从 Google 表格中提取的