Sql 动态行转列

  SELECT   ID, Name, [Month],auth
  FROM dbo.Test3

数据列表:

1.静态行专列

  Select auth, 
        MAX( CASE WHEN [Month] = '一月' then Name else null end) 一月,
        MAX( CASE WHEN [Month] = '二月' then Name else null end) 二月,
        MAX( CASE WHEN [Month] = '三月' then Name else null end) 三月,
        MAX( CASE WHEN [Month] = '四月' then Name else null end) 四月,
        MAX( CASE WHEN [Month] = '五月' then Name else null end) 五月,
        MAX( CASE WHEN [Month] = '六月' then Name else null end) 六月,
        MAX( CASE WHEN [Month] = '七月' then Name else null end) 七月,
        MAX( CASE WHEN [Month] = '八月' then Name else null end) 八月,
        MAX( CASE WHEN [Month] = '九月' then Name else null end) 九月,
        MAX( CASE WHEN [Month] = '十月' then Name else null end) 十月,
        MAX( CASE WHEN [Month] = '十一月' then Name else null end) 十一月,
        MAX( CASE WHEN [Month] = '十二月' then Name else null end) 十二月                
From dbo.Test3
Group By auth

2.利用PIVOT函数

SELECT auth, 一月, 二月, 三月, 四月 , 五月, 六月 ,七月, 八月 ,九月, 十月 ,十一月, 十二月 
     FROM (SELECT auth, [Month], Name FROM dbo.Test3) AS SourceTable  
PIVOT  
(  
  MAX(Name)  
  FOR [Month] IN (一月, 二月, 三月, 四月 , 五月, 六月 ,七月, 八月 ,九月, 十月 ,十一月, 十二月 )  
) AS PivotTable;

3.利用PIVOT,高效动态行转列 (参考上面,只要生成动态列塞进去就行了)


DECLARE @columns NVARCHAR(MAX) = '';  
  
-- 动态生成列名  
SELECT @columns +=  '' + [Month] + ','  
FROM dbo.Test3;
-- 去除最后一个逗号  
SET @columns = LEFT(@columns, LEN(@columns) - 1);   
PRINT(@columns)
  
-- 构建动态 SQL 查询  
DECLARE @sql NVARCHAR(MAX) = '  
SELECT auth, ' + @columns + '  
FROM   
(  
  SELECT auth, [Month], Name FROM dbo.Test3 
) AS SourceTable  
PIVOT  
(  
    MAX(Name)  
    FOR [Month] IN (' + @columns + ')  
) AS PivotTable;';  
  
-- 执行动态 SQL 查询
 
PRINT(@sql)  
EXECUTE(@sql);

结果:

相关推荐

  1. sql-(置)

    2023-12-28 11:42:04       12 阅读
  2. sql-2(置)

    2023-12-28 11:42:04       14 阅读
  3. sql-3(置)

    2023-12-28 11:42:04       10 阅读
  4. oracle 转行

    2023-12-28 11:42:04       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 11:42:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 11:42:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 11:42:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 11:42:04       18 阅读

热门阅读

  1. 记JVM相关一些常见面试题

    2023-12-28 11:42:04       29 阅读
  2. JVM基础篇---02

    2023-12-28 11:42:04       43 阅读
  3. 贪心算法的运用

    2023-12-28 11:42:04       35 阅读
  4. el-select可输入下拉框限制长度

    2023-12-28 11:42:04       32 阅读
  5. vue 预览 pdf、word、excel

    2023-12-28 11:42:04       41 阅读
  6. Vue 3 中安装并使用 Axios 详细步骤+样例代码详解

    2023-12-28 11:42:04       31 阅读
  7. Ajax

    2023-12-28 11:42:04       29 阅读
  8. PDF.js介绍以及使用

    2023-12-28 11:42:04       38 阅读
  9. PDF是什么格式的文件

    2023-12-28 11:42:04       37 阅读