Sql 将For Xml和With子句的结果赋值给变量

Sql 将For Xml和With子句的结果赋值给变量,sql,sql-server,Sql,Sql Server,我尝试使用XML for将一组列连接在一起,然后将结果集分配给一个变量。 我之所以使用“with”子句,是因为我的初始子查询包含计算字段,以后的子查询需要生成其他字段 当我跑的时候,它给我 查找错误-SQL Server数据库错误:关键字“with”附近的语法不正确 是否有可能让它运行,或者我必须重新编写整个查询以不使用“with”子句 declare @htmltable varchar(max) set @htmltable = cast( ( with resultse

我尝试使用XML for将一组列连接在一起,然后将结果集分配给一个变量。 我之所以使用“with”子句,是因为我的初始子查询包含计算字段,以后的子查询需要生成其他字段

当我跑的时候,它给我

查找错误-SQL Server数据库错误:关键字“with”附近的语法不正确

是否有可能让它运行,或者我必须重新编写整个查询以不使用“with”子句

declare @htmltable varchar(max)
set
  @htmltable = cast(
  (
      with resultset1 as (
        select t1.customer_email
        from table1 t1
      ),
      resultset2 as (
        select t2.email,
        rs1.*
        from resultset1 rs1
        join table2 t2 
        on rs1.customer_email = t2.email
      )
      select rs2.customer_email + '</td><td>' + cast(rs2.email as varchar(80)) + '</td><td>'
      from resultset2 rs2
      for xml path('tr'), type) as varchar(max)
  )

我想这是一个语法问题-您应该这样尝试:

DECLARE @htmltable VARCHAR(MAX)
WITH resultset1 AS (
    SELECT 'foo' colrs1
),
resultset2 AS (
SELECT 'bar' colrs2, rs1.colrs1
FROM resultset1 rs1
)

SELECT @htmltable = cast(
  (
      select rs2.colrs2 + '</td><td>' + cast(rs2.colrs2 as varchar(80)) + '</td><td>'
      from resultset2 rs2
      for xml path('tr'), type) as varchar(max)
  )

SELECT @htmltable