以下是存储过程,我平时用的
USE [db01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].[P_公共_单列值转多行]
@tb_from nvarchar(255), --源表
@tb_to nvarchar(255), --临时存放表,临时表和源表都要有以下两个字段:主字段,分列段
@zhu_lie nvarchar(255), --主字段名,如ID,
@feng_lie nvarchar(255) --要分列的列名,如“姓名”
AS
BEGIN
SET NOCOUNT ON;
declare @zhu_value nvarchar(255) --主列数值
declare @feng_value nvarchar(500) --分列数值
declare @sql nvarchar(500) --sql语句
declare @weizhi1 as integer --记录第一个分号位置
declare @weizhi2 as integer --记录第二个分号位置
exec (declare mycursor cursor for (select + @zhu_lie + , + @feng_lie + from + @tb_from + ))
open mycursor
fetch