1

由于 Azure DW 不支持变量赋值FOR XMLSELECT除了使用CURSOR?

4

1 回答 1

3

我没有找到任何直接的方法,但是下面的代码对我有用。

DECLARE @intColumnCount  INT, 
        @intProcessCount INT, 
        @varColList      VARCHAR(max) 

SET @varColList = '' 

IF Object_id('tempdb.dbo.#tempColumnNames') IS NOT NULL 
  BEGIN 
      DROP TABLE #tempcolumnnames; 
  END 

CREATE TABLE #tempcolumnnames 
  ( 
     intid          INT, 
     varcolumnnames VARCHAR(256) 
  ) 

INSERT INTO #tempcolumnnames 
SELECT Row_number() 
         OVER ( 
           ORDER BY NAME), 
       NAME 
FROM   sys.tables 

SET @intProcessCount = 1 
SET @intColumnCount = (SELECT Count(*) 
                       FROM   #tempcolumnnames) 

WHILE ( @intProcessCount <= @intColumnCount ) 
  BEGIN 
      SET @varColList = @varColList + ', ' 
                        + (SELECT varcolumnnames 
                           FROM   #tempcolumnnames 
                           WHERE  intid = @intProcessCount) 
      SET @intProcessCount +=1 
  END 

SELECT Stuff(@varColList, 1, 2, '') 

希望这可以帮助某人。

于 2016-11-25T19:07:17.870 回答