在sql中动态更改列名称

2024-01-07

我有一个这样的查询结果:

Date       User1 User2 User3 ....
----------------------------------
1/1/2000   55     78    98   ...
1/1/2001   26     33    56   ...
1/1/2002   88     67    12   ...

列数未知,因为它是数据透视查询的结果。

我想将列的名称更改为如下所示:

Date    User1 (blue)  User2 (green)  User3(brown)

颜色是我从另一个表检索的信息。

我怎样才能做到这一点?

Thanks

编辑:这是查询。

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(C.Name)  
                    from [History]



            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
set @query = 'SELECT [Date],' + @cols +' 
             from 
             (
                select [Date], Name, Value
                from [History]


             ) x
            pivot 
            (
                max(value)
                for Name in (' + @cols + ')
            ) p '

execute(@query)

SQL小提琴 http://sqlfiddle.com/#!6/93dbc/8

架构设置:

create table history (date datetime, name varchar(10), value int);
insert history values
 ('20130101', 'user1', 123),
 ('20130101', 'user2', 124),
 ('20130101', 'user3', 125),
 ('20130102', 'user1', 223),
 ('20130102', 'user3', 223),
 ('20130103', 'user2', 323);

create table colours (name varchar(10), colour_name varchar(10));
insert colours values
 ('user1', 'blue'),
 ('user2', 'green'),
 ('user3', 'brown');

Query:

DECLARE @scols nvarchar(max),
        @cols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX);

select @cols = STUFF((
  SELECT ',' + QUOTENAME(C.Name)  
  from (select distinct name from [History]) C
  ORDER BY C.Name
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'');

select @scols = STUFF((
  SELECT ',' + QUOTENAME(Name) + ' AS ' + QUOTENAME(colour_Name)  
  from (select distinct c.name, x.colour_name
        from [History] C
        JOIN colours x on x.name = c.name) y
  ORDER BY Name
  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'');

set @query = '
    SELECT [Date],' + @scols +' 
    from (
        select [Date], Name, Value
        from [History]
         ) x
    pivot 
         (
        max(value)
        for Name in (' + @cols + ')
         ) p ';

-- print @query --<< uncomment this line to see the query that gets generated
exec (@query);

Results http://sqlfiddle.com/#!6/93dbc/8/0:

|                           DATE |   BLUE |  GREEN |  BROWN |
-------------------------------------------------------------
| January, 01 2013 00:00:00+0000 |    123 |    124 |    125 |
| January, 02 2013 00:00:00+0000 |    223 | (null) |    223 |
| January, 03 2013 00:00:00+0000 | (null) |    323 | (null) |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在sql中动态更改列名称 的相关文章

  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 使用包含空值列的 WHERE 子句的更新语句

    我正在使用另一个表中的数据更新一个表上的列 这WHERE子句基于多个列 并且某些列为空 根据我的想法 这个空值是什么throwing off你的标准UPDATE TABLE SET X Y WHERE A B陈述 See 这个 SQL 小提
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • 使用 xmlagg 时出现子查询错误和太多值

    我在连接许多大型表中的所有数据时遇到问题 我昨天对此提出了问题 但不幸的是 listagg 似乎不是一个好的选择 链接子查询返回多行 https stackoverflow com questions 54651144 subquery r
  • SQL 插入失败 - 违反主键约束

    我在 SQL Insert 语句中看到一个非常奇怪的问题 我有一个简单的表 带有一个 ID 和 2 个日期时间 请参阅下面的创建脚本 CREATE TABLE dbo DATA POPULATION LOGS ID int IDENTITY
  • 当我输入 dateadd 或 datediff 代码时,我总是收到此错误“ORA-00904“DATEADD”无效标识符。”

    我有一个大学项目 并且有一个包含入院和出院日期属性的患者表 我需要删除超过 7 年的记录 我使用了以下代码 delete from patient where dis date gt datedadd yy 7 getdate 我收到错误
  • 如何在sqlite中添加特定数量的空行?

    我有一个SQLite文件 我想添加2550 empty NULL rows 我可以使用此代码添加一个空行 INSERT INTO my table DEFAULT VALUES 但我需要 2550 行 有什么捷径吗 我不想执行相同的代码 2
  • 如何对 SQL Server Express 进行实时更改

    我一直在使用 VS studio 开发一个 ASP NET Web 应用程序 我正在使用 SQL Server Express 在开发过程中 我一直在我的服务器上测试我的网络应用程序 每次我需要更新数据库时 我都会简单地删除旧数据库 位于我
  • 按两列的最小值排序

    I use SQL Server 2008 R2 我需要按两列的最小值对表进行排序 该表如下所示 ID integer Date1 datetime Date2 datetime 我希望我的数据按至少两个日期排序 以这种方式对该表进行排序的
  • 如果超过高度则动态浮动柱

    I ve got a questing concerning a dynamic floating layout of li s in a ul Container 灰色容器 ul 固定高度为 150px 所有 li 其中的应使用最大高度
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 优化 LINQ 查询 - 如何缩短执行时间?

    我想知道是否有一个好的方法来优化我的 LINQ 查询 我正在使用类似于以下内容的 LINQ 查询从数据库检索数据 PKs is a list of integers var import context table Where x gt P
  • Netezza SQL 将 VARCHAR 转换为二进制字符串

    我有一个位图存储为VARCHAR在内特扎 需要转换一下VARCHAR转换为 Netezza 中的二进制字符串 输入 Netezza col 值 VARCHAR 0xFFFFFFFFFFFFFFFF 期望的输出 VARCHAR gt 1111
  • 将 5 gig 文件导入表时出错

    我正在尝试批量插入表 use SalesDWH go BULK INSERT dbo npi FROM S tmp npi csv WITH FIELDTERMINATOR ROWTERMINATOR n lastrow 200 first
  • MySql 复合索引

    我们使用 MySql 作为我们的数据库 以下查询在 mysql 表 大约 2500 万条记录 上运行 我在这里粘贴了两个查询 查询运行得太慢 我想知道更好的复合索引是否可以改善这种情况 你知道最好的综合指数是什么吗 并建议我这些查询是否需要
  • PLSQL 中的时区转换

    我需要将系统日期和时间转换为特定时区 例如东部时间 我无法假设我当前的时区 如何在plsql中转换它 请帮我 假设你有一个TIMESTAMP WITH TIME ZONE 例如systimestamp 您可以使用AT TIME ZONE句法
  • MSSQL 选择前 10 名获胜分数,包括并列以及每个类别中至少一个

    我使用以下语句获得了一些帮助 找到了前 10 名分数 包括并列条目 select T EntryID T CategoryID T Score from select EntryID CategoryID Score dense rank
  • 如何限制mySQL中的搜索和替换字符串

    我用它来搜索和替换 mySQL 中的字符串 UPDATE products SET prodname REPLACE prodname S S 这些产品包含诸如 TYLENOL TABS 100 S 之类的字符串 我想将其转换为 TYLEN

随机推荐

  • 在 AsyncTask 中使用从 LoaderManager 返回的游标

    我有一个光标返回onLoadFinished回调 来自LoaderManager LoaderCallbacks 我想对此游标进行一些 可能成本高昂 后处理 所以 我要发射一个AsyncTask使用这个游标 但是 我遇到间歇性崩溃 但有以下
  • 从 MongoDb 数组的数组中删除元素

    下面是数组联系人的架构 联系人数组有一个字段标签 它是另一个数组 如何从数组 Hashtags 中删除元素 openLove contacts addedDate ISODate 2015 12 02T09 06 09 891Z perso
  • 复制 Bash 数组失败

    在 Bash 脚本中将数组分配给变量似乎相当复杂 a a b c b a echo a 0 echo a 1 echo b 0 echo b 1 leads to a b a 代替 a b a b 为什么 我该如何修复它 如果你想copy将
  • WPF:如何使用组合框文本搜索?

    我是否正确假设组合框中的文本搜索在组合框顶部提供了一个文本输入框 当我输入时该文本输入框会被过滤掉 如果是这样 我不明白为什么它不起作用 我有一个 ComboBox 其 ItemsSource 通过 DataContext 绑定到 List
  • Chrome 扩展程序消息传递不起作用(background.js 到 content.js)

    我束手无策 试图弄清楚为什么我无法在我的 Chrome 扩展程序中传递消息 请记住 上个月我对 javascript 完全陌生 并且我一直在通过在线视频自学 我的编码背景完全是 java 我想要的只是让我的后台脚本能够通知我的内容脚本发生了
  • 检测 FF 插件中的导航

    我正在使用 FF Addon SDK 将 Chrome 扩展移植到 FF 在后台脚本 main js 文件中 我需要使用 FF 等效项 chrome webNavigation onBeforeNavigate addListener an
  • 无法将带有泛型方法的函数接口转换为 lambda 表达式

    无法将具有泛型方法的函数接口转换为 lambda 表达式 以下代码正在运行 它没有 lambda 表达式 即使用匿名类 public interface Pro public
  • 尝试复制 pyside 对象时出现问题

    我在使用时遇到了一个相当令人沮丧的问题pyside我欢迎任何建议 首先 一些背景 我使用以下命令创建了一个简单的 GUIQt设计师我已经用过pyside uic exe到我的 ui文件以生成相关的Python file 我在用Python
  • 未找到 -lBranch-SDK 的反应本机 xcode 库

    我有本机 v0 49 反应 使用此链接安装react native branch后链接到反应本机分支 https github com BranchMetrics react native branch deep linking 我尝试使用
  • symfony2.0 中基于内容协商(“接受”HTTP 标头)的路由

    当谈到 REST 服务时 Symfony 开发人员 和说明书 倾向于将资源表示的选择基于文件扩展名而不是内容协商 看到这个计算器问题 https stackoverflow com questions 381568 rest content
  • jQuery UI Draggable 不适用于新创建的 DOM 元素

    我有一些可以使用 jQuery UI 拖动的 DOM 元素 所有元素都工作正常 但是当我使用 jQuery 创建一些元素时 它们根本不可拖动 IE div draggable draggable Existing element it wo
  • 如何向 SimulatorTrampoline 添加访问特定文件夹的权限

    macOS Catalina 提供了一种访问 拒绝文件和文件夹的新方法 突然 我拒绝了访问请求SimulatorTrampoline to my Documents文件夹 无法取回 Also 安全与隐私 gt 隐私 Full Disk Ac
  • 将循环中的变量值从一个脚本发送到另一个脚本

    我一直在摆弄将变量从一个脚本发送到另一个脚本 并且很容易地完成了一些基本的事情 但我陷入了困境并希望获得一些输入 这是我的 script1 py import time x 0 while x lt 100 x x 1 time sleep
  • 更快地找出一个数字是否以 2 开头的方法?

    在Java中 查找给定整数是否以数字2开头而不需要将数字转换为字符串的更快方法是什么 String valueOf number charAt 0 2 如果你想避免将其转换为字符串 你可以继续除以 10 来找到最高有效数字 int getM
  • 如何在 Google 地图上的每次点击事件中获取 x 和 y 编号?

    我想在 Google 地图上的每个点击事件中检索 x y 坐标 有人可以帮我吗 google maps event addListener map click function e document form1 waypointLog va
  • 如何在交互式会话中重新加载 Django 模型而不丢失本地模型?

    我正在使用交互式 shell 进行一些研究 并使用 Django 应用程序 shell plus 来存储数据并使用方便的管理浏览数据 有时我会添加或更改一些应用程序模型 并运行syncdb 或更改模型时进行南迁移 即使我重新导入应用程序模型
  • DT右边有多个DD?

    基本上我当然想在 HTML 中实现类似的东西 Description Element 1 Element 2 Element 3 eventually bla bla bla 对于桌子来说这是一个笑话 table tr td Descrip
  • 无法在控制台上看到 Firebase 性能仪表板

    我最近在我的 Android 应用程序中添加了 Firebase 性能 但已经 2 天了 我在 Firebase 控制台上没有看到任何更新 我可以在控制台和日志猫上看到崩溃 分析 我还在 log cat 中看到了 firebase 性能自定
  • 将 EasyButton、Geoman 与 ngx-leaflet 集成

    我在 Angular 应用程序中使用原始 leaflet js 它依赖于一些传单插件 如 EasyButton Geoman Distortable Image ngx leaflet 看起来很酷而且很简单 所以我决定迁移到 ngx lea
  • 在sql中动态更改列名称

    我有一个这样的查询结果 Date User1 User2 User3 1 1 2000 55 78 98 1 1 2001 26 33 56 1 1 2002 88 67 12 列数未知 因为它是数据透视查询的结果 我想将列的名称更改为如下