昨天写一条SQL的时候要用到sql行转列的动态构造办法的。
SQL语句如下:
declare @sql2 varchar(8000)
select @sql2 = isnull(@sql2 + ',' , '') + [szGroupName] from GroupUser group by [szGroupName]
exec ('select * from (select [EVENTCATEGORY],[szGroupName] from T_AUDITINFO a join GroupUser b on a.[USERNAME]=b.[szUserName] where DOMAINNAME=''WORKGROUP'') c pivot (count([szGroupName]) for [szGroupName] in (' + @sql2 + ')) d')
调试的时候总是报错,不是报“pivot”附近有语法错误,就是报提升权限。于是在网上查找解决方法,发现有一个系统存储过程可以解决该问题。
EXEC sp_dbcmptlevel audit,90
其中,audit 为需要修改兼容性得数据库名。
然后再运行以上SQL 就一切OK啦