• Hey Steve;

    Thanks for the code. I tweaked it a little for my situation, added parameter markers, and stuck in my templates...

    Pretty handy!

    USE <databasename, sysname, >;

    SET NOCOUNT ON

    DECLARE

    @table_name sysname

    , @where_clause varchar(MAX)

    , @col_names varchar(MAX)

    , @variants varchar(MAX)

    , @sql varchar(MAX), @DELIM varchar(1)

    SELECT @table_name = '<Table Name, sysname, >'

    , @where_Clause = '<Where Clause, varchar(max), WHERE F = V>'

    , @col_names='', @variants = '', @DELIM = '';

    SELECT

    @col_names = @col_names + @DELIM +c.column_name,

    @variants = @variants + @DELIM + 'CONVERT(SQL_VARIANT, '+c.column_name + ') AS '+c.column_name,

    @DELIM = ','

    FROM information_schema.columns c

    WHERE table_name = @table_name

    AND table_schema = 'dbo'

    AND data_type NOT IN ('text','ntext','image','timestamp')

    ORDER BY c.ordinal_position;

    SET @sql = 'SELECT TBLPIVOT.Column_Name, TBLPIVOT.Value

    FROM (

    SELECT ' + @variants + ' FROM ' + @table_name + ' ' + @where_clause + ') x

    UNPIVOT (VALUE FOR Column_Name IN (' + @col_names + ')) AS TBLPIVOT';

    EXEC(@sql);

    Cheers,

    Mark
    Just a cog in the wheel.