使用动态列和列名称进行逆透视

2024-02-08

我正在尝试取消透视具有大量列的表,其格式为:

PID UID col1 col2 col3...

下面的动态 SQL 将为我提供除列名之外的几乎所有内容。目标是使用逆透视值源自的列的名称填充“ID”字段。

-- Build list of cols we want to unpivot (skip PID & UID)
declare @cols nvarchar(max) 
select @cols = coalesce(@cols+N',', N'') + quotename(c.name) from syscolumns c
inner join sysobjects o on c.id = o.id and o.xtype = 'u'
where o.name = 'MyTable' and c.name not in ('PID', 'UID') order by c.colid

declare @query nvarchar(max)  

select @query = N'
select PID, [UID], ID, Val
from 
    (
    select PID, UID, ''ID'' as ID, ' + @cols + '
    from MyTable
    where UID <> 0
    ) as cp
    unpivot
    (
    Val for Vals in (' + @cols + ')
    ) as up
'
exec sp_executesql @query 

我想也许我可以与 syscolumns 和 MyTable 进行某种连接,然后进行第二次 unpivot,但我一直无法弄清楚。

最终我的查询应该返回

PID UID ID          Val

123 456 'col1 name' 'xyz'
123 456 'col2 name' 'def'
123 333 'col1 name' 'fdf'
...

因此,虽然我知道如何获取列的名称以便为 unpivot 生成动态 SQL,但我不知道如何将列的名称连接到 unpivot 的输出中。


您可以从以下位置引用列名称val for col in逆透视的一部分。 col 获取列名

小提琴示例 http://sqlfiddle.com/#!3/30e3e/2

-- Build list of cols we want to unpivot (skip PID & UID)
declare @cols nvarchar(max) 
select @cols = coalesce(@cols+N',', N'') + quotename(c.name) from syscolumns c
inner join sysobjects o on c.id = o.id and o.xtype = 'u'
where o.name = 'MyTable' and c.name not in ('PID', 'UID') order by c.colid

declare @query nvarchar(max)  

select @query = N'
select PID, [UID], Col as ID, Val
from 
    (
    select PID, UID, ' + @cols + '
    from MyTable
    where UID <> 0
    ) as cp
    unpivot
    (
    Val for Col in (' + @cols + ')
    ) as up
'
exec sp_executesql @query 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用动态列和列名称进行逆透视 的相关文章

  • 如何从 Databricks Delta 表中删除列?

    我最近开始发现 Databricks 并遇到了需要删除增量表的特定列的情况 当我使用 PostgreSQL 时 它就像 ALTER TABLE main metrics table DROP COLUMN metric 1 我正在浏览 Da
  • 使用 SQL Server 作为具有多个客户端的数据库队列

    给定一个充当队列的表 如何最好地配置表 查询 以便多个客户端同时处理队列 例如 下表指示了工作人员必须处理的命令 当worker完成后 它会将处理后的值设置为true ID COMMAND PROCESSED 1 true 2 false
  • 动态框架中未定义的架构符号

    我正在开发一个 iOS 框架 该框架包含多个第三方框架并使用 UnitySendMessage C 方法与 Unity 进行通信 我想创建一个动态框架 支持 iOS8 但我偶然发现以下编译错误 Undefined symbols for a
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • sql查询连接两个服务器中不同数据库的两个表

    我在 ServerS 上的数据库中有两个表 tableA 在 ServerB 上的数据库中有两个表 我只想根据这些表的公共字段名对这些表执行 fullouter join 在 SQL Server 中 您可以创建一个链接服务器 在 Mana
  • Camel Sql 大型数据集的消费者性能

    我正在尝试在 Ignite 缓存中缓存一些静态数据 以便更快地查询 因此我需要从 DataBase 读取数据 以便将它们插入到缓存集群中 但是行数约为 300 万 通常会导致 OutOfMemory 错误 因为 SqlComponent 试
  • SQL Server、ISABOUT、加权项

    我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的 这是我目前所在的位置 每个查询返回以下行 查询 1 权重 1 初始排名 SELECT FROM CONTAINSTABLE documentParts ti
  • 哪种 SQL 模式能够更快地避免插入重复行?

    我知道有两种不重复插入的方法 第一个是使用WHERE NOT EXISTS clause INSERT INTO table name col1 col2 col3 SELECT s s s WHERE NOT EXISTS SELECT
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • 如何将 T-SQL 中的结果连接到列中?

    我正在处理一个查询 它应该给我这样的结果 Name Surname Language Date James Hetfield en gb fr 2011 01 01 Lars Ulrich gb fr ca 2011 01 01 但我的选择
  • PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

    当我尝试替换时收到以下错误消息null to zero PIVOT 运算符中指定的列名 jan 与 PIVOT 参数中的现有列名称 查询如下 select from select isnull jan 0 isnull feb 0 sum
  • 带有 viewbags 的 MVC 数据集

    如何将数据集放入视图袋中并在视图中显示结果 我有一个来自模型的数据集 并将其写入视图包 我想使用 foreach 循环从视图中的视图包中获取数据行 我已经有一个变量进入视图 所以我无法正常传递数据集 每页我还会有许多其他数据集 所以我认为
  • 从Oracle表中删除重复行

    我正在 Oracle 中测试某些内容并使用一些示例数据填充表 但在此过程中我不小心加载了重复记录 因此现在我无法使用某些列创建主键 如何删除所有重复行并只保留其中一行 Use the rowid伪列 DELETE FROM your tab
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • 数据库“key/ID”设计思想、代理键、主键等

    因此 我最近看到多次提到代理键 但我不太确定它是什么以及它与主键有何不同 我总是假设 ID 是表中的主键 如下所示 Users ID Guid FirstName Text LastName Text SSN Int 然而 维基百科将代理键
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • SQL:将现有列设置为 MySQL 中的主键

    我有一个包含 3 列的数据库 id name somethingelse 该表没有设置索引 我收到 未定义索引 在 phpmyadmin 中id 是一个 7 位字母数字值 每行都是唯一的 我想将 Drugid 设置为主键 索引 我不知道有没
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat

随机推荐

  • .NET 字符串操作区分大小写吗?

    NET 字符串函数是这样的吗IndexOf blah 区分大小写 据我所知 它们不是 但出于某种原因 我在我的应用程序中看到了错误 其中查询字符串中的文本采用驼峰式大小写 如 UserID 并且我正在测试IndexOf userid 是的
  • JavaScript 中的 Char 数组到 Int32

    我有一个 char 数组 data 和一个 Int32 dictIdFrame 我希望 dictIdFrame 采用 data i i 3 的 ASCII 0 255 值 我的意思是四个字节变成一个 int32 其中 data i 是不太重
  • android.util.Log 中的错误或功能? - Log.isLoggable(DEBUG) = false 但 Log.d() 未禁用

    更新 重新制定问题和标题 我一直认为昂贵的 android 日志记录方法可以通过询问日志记录是否像这样活跃来优化 import android util Log if Log isLoggable MyContext Log DEBUG L
  • 用于将条件数据复制到特定单元格的 VBA 宏

    我是 VBA 编程新手 我正在寻找从匹配条件的不同工作表中获取数据 然后从一个特定单元格复制并粘贴到另一个特定单元格 7 次 我的代码不起作用 我正在寻求改进它 当我运行代码时 我在 IF 语句开头被标记为运行时错误 1004 方法 对象范
  • Twitter 的 Bootstrap Datepicker 缺少 Glyphicons

    我正在尝试使用引导程序中的日期选择器 http eternicode github io bootstrap datepicker http eternicode github io bootstrap datepicker 并且一切正常
  • JNI 和构造函数

    我有一个已编译的库 需要在项目中使用 简而言之 它是一个用于与特定硬件交互的库 我拥有的是 a 和 dll 库文件 分别适用于 Linux 和 Windows 以及一堆 C h 头文件 其中包含其中描述的所有公共函数和类 问题是该项目需要使
  • 嵌入式Tomcat:如何配置请求线程数

    In 嵌入式Tomcat 我该如何配置请求线程数 我似乎无法让它发挥作用 我尝试了所有这些但没有成功 tomcat getConnector setProperty maxThreads 20 tomcat getConnector set
  • Python 中的裸词/新关键字

    我想看看是否可以定义新的关键字 或者 正如它们所称的那样销毁所有软件的 WAT 谈话 https www destroyallsoftware com talks wat当讨论 Ruby 时 用 Python 来讨论 我想出了一个在其他地方
  • C# 中的事件 - 定义和示例 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 事件发生在什么地方C 你能给我一个清
  • Haskell Parsec - 使用自定义令牌时错误消息的帮助不大

    我正在研究分离解析器的词法分析和解析阶段 经过一些测试后 我意识到当我使用 Parsecs Char 令牌之外的一些令牌时 错误消息的帮助不大 以下是使用 Char 令牌时 Parsec 错误消息的一些示例 ghci gt P parseT
  • 查找一周中的哪一天

    假设我在 R 中有一个日期 其格式如下 date 2012 02 01 2012 02 01 2012 02 02 R 中是否有任何方法可以添加另一列 其中包含与日期相关的星期几 数据集非常大 因此手动进行更改是没有意义的 df data
  • 计算文本文件中的行数

    我正在阅读文本文件中的行 我想知道这是否是一个好方法 我必须写这个函数numberoflines来减少number of lines variable加 1 是因为在 while 循环中 对于读取的每一行 它都会向 number of li
  • E/Volley:[194] BasicNetwork.performRequest:url 出现意外响应代码 307

    我试图在我的 Android 应用程序中通过 POST 将 json obj 通过 volley 发送到 api 并捕获 json 响应 但我不断收到此错误 E Volley 194 BasicNetwork performRequest
  • JavaFX:对话框内的TableView有重复的项目

    我的问题TableView及其物品 我创建了一个小Dialog窗口显示有关我的应用程序的警告 并在Dialog我有一个TableView单击按钮后会显示警告名称以及有关警告的一些信息 我创建了一个WarningUtil class Sing
  • 生成用于设置 Apple 推送通知的 .pem 文件

    我尝试并尝试生成 pem 文件 每次从客户帐户生成证书 然后使用终端生成 pem 文件 但它没有用 谁能给出一步一步的程序吗 要为您的 iOS 应用程序启用推送通知 您需要创建 Apple 推送通知证书 pem 文件 并将其上传给我们 以便
  • 从 C# COM dll 返回 S_FALSE

    我在 IDL 中定义了一个方法 如下所示 interface IMyFunc IDispatch id 1 helpstring method GetNextFunction HRESULT GetNextFunction in out l
  • 使用javascript隐藏文本框中的光标?

    如何使用 JavaScript 在 asp net 文本框中隐藏光标 我不想在文本框中看到闪烁的东西 Please不要这样做 你会破坏用户的期望 光标在那里是有原因的 当用户键入或点击删除 退格键等时 他们想知道它将发生在哪里 如果您想编辑
  • 将现有 pdf 添加到 fpdf

    有没有我可以调用的函数 以便将现有的 pdf 包含在我的fpdf file 例如 pdf gt AddPage from file example pdf 类似的东西 是否可以 fpdi 就是您正在寻找的 请参阅http www setas
  • CSS滚动条样式跨浏览器[重复]

    这个问题在这里已经有答案了 如何定义跨浏览器的 CSS 滚动条样式 我测试了这段代码 它只在 IE 和 Opera 中有效 但在 Chrome Safari 和 Firefox 中失败
  • 使用动态列和列名称进行逆透视

    我正在尝试取消透视具有大量列的表 其格式为 PID UID col1 col2 col3 下面的动态 SQL 将为我提供除列名之外的几乎所有内容 目标是使用逆透视值源自的列的名称填充 ID 字段 Build list of cols we