栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

动态数据透视查询

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态数据透视查询

要使PIVOT动态,您必须编写一个存储过程。

CREATE PROCEDURE dynPivot (@select varchar(255), @pivotColumns varchar(255), @summaries varchar(100) ) ASDECLARE @pivot varchar(max), @sql varchar(max), @selectForPivotColumns varchar(max)SELECT @selectForPivotColumns = REPLACE(@select, 'SELECT', 'SELECT ' + @pivotColumns + ' AS rowValuesToColumns, ')CREATE TABLE #pivot_columns (pivot_column varchar(100))SELECT @sql = 'SELECT DISTINCT rowValuesToColumns FROM (' + @selectForPivotColumns + ') as t'INSERT INTO #pivot_columnsEXEC(@sql)SELECT @pivot = COALESCE(@pivot + ', ', '') + '[' + pivot_column + ']' FROM #pivot_columnsSELECt @sql = '    SELECT * FROM    (        ' + @select + '    ) AS t    PIVOT    (        ' + @summaries + ' FOR ' + @pivotColumns + ' IN (' + @pivot + ')    ) AS p'EXEC(@sql)

然后,您可以这样称呼它:

EXEC dynPivot 'SELECT * FROM tbl_DeductionHead', 'DeductionHead', 'SUM(DeductionPerAmount)';


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号