SQL 动态透视 - 如何对列进行排序

2024-01-28

我正在对包含以下内容的表进行动态数据透视查询:

  • OID-订单ID
  • 尺寸——产品的尺寸
  • BucketNum - 大小的顺序 应该去
  • 数量 - 订购了多少

大小列包含不同的大小,具体取决于 OID。

因此,使用找到的代码here http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx,我把它放在一起:

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)

SELECT  @listCol = STUFF(( SELECT distinct  '], [' + [size]
                           FROM     #t
                         FOR
                           XML PATH('')
                         ), 1, 2, '') + ']'


SET @query = 'SELECT * FROM
      (SELECT OID,  [size], [quantity]
            FROM #t 
            ) src
PIVOT (SUM(quantity) FOR Size
IN (' + @listCol + ')) AS pvt'


EXECUTE ( @query )

除了列标题(大小标签)不是基于bucketnum 列的顺序外,这非常有效。它们是根据尺寸排列的。

我在数据透视后尝试了可选的 Order By,但这不起作用。

如何控制列的显示顺序?

谢谢


你需要解决这个问题:

SELECT  @listCol = STUFF(( SELECT distinct  '], [' + [size]
                           FROM     #t
                         FOR
                           XML PATH('')
                         ), 1, 2, '') + ']'

以正确的顺序返回列。你可能必须做这样的事情而不是使用DISTINCT:

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

SQL 动态透视 - 如何对列进行排序 的相关文章

  • SQL Server - 如何向登录名授予对所有数据库的读取访问权限?

    我需要向新登录授予对服务器上所有 300 个数据库的读取权限 如何在不选中用户映射区域中的 300 个复选框的情况下完成此操作 一种方法是在 SSMS 的查询菜单上设置 结果为文本 然后执行以下命令 它实际上并不进行更改 而是生成一个脚本供
  • Access 2013 SQL 中的转换和透视

    如何使用 TRANSFORM 和 PIVOT 函数从第一个表获取第二个表 TABLE 01 Config ID ConfigField ConfigValue 11 Name Basic 11 Version 1 01 11 Owner J
  • 实体框架 - sql server 表中未设置默认值

    SQL Server 2005 数据库表有一列 createdon 其默认值设置为 getdate 我正在尝试使用实体框架添加记录 createdon 列未更新 我是否错过了实体框架中的任何属性 请提出建议 这是实体框架存在的少数问题之一
  • SQL Server 2005 Reporting Services:如何计算不为空的行?有计算总数的提示吗?

    在 SQL Server 2005 中使用报表服务 有没有办法只计算不为空的记录 类似于 Excel 中的 COUNTA 我认为这将是一个非常简单的过程 但我尝试过的都没有成功 例如 我尝试使用以下表达式来表示 Completed 这是我要
  • 如何比较两个日期以查找 SQL Server 2005 中的时间差,日期操作

    我有两列 job start job end 2011 11 02 12 20 37 247 2011 11 02 13 35 14 613 如何使用 T SQL 查找作业开始和作业结束之间经过的原始时间量 我试过这个 select job
  • SQL Server 与 Oracle DBMS_METADATA.GET_DDL 并行吗?

    我正在寻找命令行或脚本化解决方案来从 SQL Server 2005 中为所有数据库对象提取 DDL 表 存储过程 视图 索引 索引 约束等 GUI 工具不感兴趣 优先选择内置工具 因为它最能与 Oracle 的 DBMS METADATA
  • Oracle SQL 列转行(无需 UNPIVOT)

    我目前拥有的 Team User Apples Oranges Pears Red Adam 4 5 6 Red Avril 11 12 13 Blue David 21 22 23 需要什么 Team User Product Count
  • 将多个子查询作为值插入

    假设我要插入一个有很多 fk 的表 只是为了在下面解释一下错误的说法 insert into mytable values somevalue somevalue select id from othertable1 where condi
  • SQL Server 2005 命名实例端口问题

    我在一台服务器上有 4 个不同的 SQL Server 2005 命名实例 用于测试目的 服务器上没有默认实例 因为我最终需要允许跨防火墙与这些实例进行通信 所以我已将每个实例的端口设置为静态侦听服务器的所有 IP Edit TCP IP
  • 如何将xml数据插入到sql server 2005中的表中

    我的表结构是 CREATE TABLE dbo Emp ID int NOT NULL EmpName varchar 50 NOT NULL Sal int NULL 在此 emp 表中 我想从 xml 字符串插入数据 xml 是
  • 使用 SQL Server 2005 模糊匹配可能的重复项的良好 SQL 策略

    我想在大型数据库中找到与 COMPANYNAME 和 ADDRESSLINE1 等字段匹配的可能的候选重复记录 Example 对于具有以下 COMPANYNAME 的记录 阿克米公司 我希望我的查询能够吐出具有这些 COMPANYNAME
  • SQL Server 2005 - 应该多久重建一次索引?

    我最近接手了一个项目 他们有一个 SQL 作业设置 每三个小时运行一次 它会重建 ASP NET 会员数据库表中找到的索引 每天重建索引 8 次 这看起来相当高 我每天都会获得大约 2000 个新用户 总共大约有 200 万注册用户 对于正
  • 将选择结果(一列)拆分为多列

    我一直在努力找出如何实现这一目标 但我认为我一开始就没有能力知道要寻找什么 我正在使用现有系统 我无法更改数据库架构 也无法规定用户如何输入数据 我必须利用我们现有的资源来工作 目前 我们的用户正在将统计数据放入表中的一个文本字段中 他们使
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • SQL Server 架构和默认架构

    我的数据库中有一个模式定义 除了现在每次执行 sql 语句时我都必须提供模式 SELECT FROM myschema table 我使用 Management Studio 为我的用户设置了默认架构 并运行了ALTER USER myUs
  • 如何将图片存储在图像列中?

    我有一个用户表 Name varchar 20 Picture image 我想将图像存储到 Picture 列中 如何使用 SQL 脚本实现此目的 以下是将图像存储到 sql server 的示例代码 SqlConnection conn
  • SQL Server - 将 XML 索引添加到视图上的计算列

    我有一个表 将逗号分隔的值存储在 NVARCHAR MAX 中 我创建了一个视图 它使用字符串操作将这些逗号分隔值转换为 xml 列表 然后我可以使用此 Xml 列访问每个项目 如果我可以为该列建立索引 那么对该列的查询将受益匪浅 但是 在
  • Excel 数据透视表

    我是一名 Excel 新手 想知道 Excel 是否具有内置功能来执行以下操作 转此数据 Name Activity Option Bob Monday Activities Golf Bob Tuesday Activities Kaya
  • 视图和表在性能上的差异

    对于包含大量数据的表来说什么是最好的 我有一个存储过程 可以根据一些过滤器创建报告 在我的 SP 中 我读取表格并放入所有内部联接和公式 然后在放置过滤器的 where 条件中 谈论性能什么更好 创建一个包含所有联接的视图或读取表 就像我正

随机推荐