Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT * FROM ( VALUES
- (256087,'MCD','217647-A33')
- ,(256526,'MCD','217647-A33')
- ,(256777,'HARP','217647-A33')
- ,(256794,'MCD','217647-A33')
- ,(256835,'MCD','217647-A33')
- ) VTE
- ([ID],[prod],[provn&qw])
- DECLARE @QUERY VARCHAR(MAX);
- DECLARE @TBL VARCHAR(20) = '#TEMP1';
- ;WITH CTE as
- (
- SELECT distinct t.name as SYStype, '['+C.name+']' COLNAME, C.max_length , column_id
- FROM tempdb.sys.columns C
- INNER JOIN sys.types T on T.system_type_id = C.system_type_id
- WHERE [object_id] = OBJECT_ID(N'tempdb..'+@TBL)
- AND t.name <> 'sysname'
- )
- ,LINES AS
- ( --CREATES SINGLE LINES
- SELECT distinct LN = concat('SELECT CONCAT('',('',', SUBSTRING((SELECT ','','',' +
- CASE WHEN SYStype in('nvarchar','varchar','datetime','time','date') THEN CONCAT('CASE WHEN ',COLNAME,' IS NULL THEN ''NULL'' ELSE CONCAT('''''''',',' REPLACE(' ,COLNAME,','''''''','''''''''''')',','''''''') END')
- ELSE CONCAT('CASE WHEN ',COLNAME,' IS NULL THEN ''NULL'' ELSE CAST(',COLNAME,' AS VARCHAR(20)) END') END +''
- --ELSE COLNAME END
- FROM CTE
- order by column_id FOR XML path (''), TYPE).value('.[1]', 'NVARCHAR(MAX)'),6,90000),','')'')',CHAR(10),' FROM '+@TBL)
- )
- select @QUERY=
- concat('SELECT ''SELECT * FROM ( VALUES ''',CHAR(10),'UNION ALL',CHAR(10),
- LN
- ,CHAR(10),'UNION ALL',CHAR(10),'SELECT '' ) VTE', CHAR(10),'(',
- (SELECT SUBSTRING((SELECT ','+COLNAME FROM CTE order by column_id FOR XML path (''), TYPE).value('.[1]', 'NVARCHAR(MAX)'),2,2000)) ,')''')
- FROM LINES
- EXECUTE (@QUERY);
Add Comment
Please, Sign In to add comment