0

我正在尝试使用 XML 将一堆列连接在一起,然后将结果集分配给一个变量。我正在使用“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)
  )
4

1 回答 1

0

我想这是语法问题 - 你应该这样尝试:

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
于 2020-10-12T18:05:50.183 回答