sql-server – sql 2005中的PIVOT
发布时间:2020-05-24 09:51:30 所属栏目:MsSql 来源:互联网
导读:我需要转动一列(Numbers列). 示例需要此数据: a 1a 2b 3b 4c 5d 6d 7d 8d 9e 10e 11e 12e 13e 14 看起来像这样 a 1 2b 3 4c 5d 6 7 8 9e 10 11 12 13 14 任何帮助将不胜感激… 使用ROW_NUMBER(),PIVOT和一些动态SQL(但不需要游标): CREATE TABLE
|
我需要转动一列(Numbers列).
a 1 a 2 b 3 b 4 c 5 d 6 d 7 d 8 d 9 e 10 e 11 e 12 e 13 e 14 看起来像这样 a 1 2 b 3 4 c 5 d 6 7 8 9 e 10 11 12 13 14 任何帮助将不胜感激… 解决方法使用ROW_NUMBER(),PIVOT和一些动态SQL(但不需要游标):CREATE TABLE [dbo].[stackoverflow_198716](
[code] [varchar](1) NOT NULL,[number] [int] NOT NULL
) ON [PRIMARY]
DECLARE @sql AS varchar(max)
DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique
DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique
SELECT @pivot_list = COALESCE(@pivot_list + ',','') + '[' + CONVERT(varchar,PIVOT_CODE) + ']',@select_list = COALESCE(@select_list + ',PIVOT_CODE) + '] AS [col_' + CONVERT(varchar,PIVOT_CODE) + ']'
FROM (
SELECT DISTINCT PIVOT_CODE
FROM (
SELECT code,number,ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE
FROM stackoverflow_198716
) AS rows
) AS PIVOT_CODES
SET @sql = '
;WITH p AS (
SELECT code,ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE
FROM stackoverflow_198716
)
SELECT code,' + @select_list + '
FROM p
PIVOT (
MIN(number)
FOR PIVOT_CODE IN (
' + @pivot_list + '
)
) AS pvt
'
PRINT @sql
EXEC (@sql) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 如何在存储过程中将两个查询联合起来以获得一
- sql-server – T-SQL:什么是NOT(1 = NULL)?
- centos 7系统下编译安装 mysql5.7教程
- sql-server-2005 – ORDER BY 5 DESC是什么意思?
- SQL Server 数据库性能优化一:数据库自身优化提升性能
- SQL Server数据库不能直接用instr函数
- innodb存储引擎修改表共享空间为独立空间
- sql-server-2005 – 如何在SQL Server 2005中查找视图的派生
- 从现有数据库模式生成Hibernate hbm xml文件和实体类
- sql-server – 在IF EXISTS中包装查询使得它非常慢
