加入两个CTE与Pivots

时间:2016-08-15 06:36:13

标签: sql sql-server sql-server-2008 common-table-expression

这将是一个很长的问题,所以我很抱歉。我有一个搜索,我可以找到任何符合我所遇到的错误的账单。

我目前需要弄清楚如何连接两个CTE,这两个CTE都被转动以允许将数据缝合回表中。

不幸的是,由于数据必须在其原始设计中进行维护以用于审计目的,因此我无法更新表格所需的正确格式。

目前CTES是

CTE1文件:

  • ID
  • REF
  • UserID
  • SubmitDate
  • SubmitBy
  • A1
  • A2
  • A3
  • A4
  • A5
  • 评论

CTE2字段:

  • ID
  • Q1
  • Q2
  • Q3
  • Q4
  • Q5

我们的想法是在CTE和2上的ID字段上加入 但是我正在努力让联合工作。

加入逻辑的结构

WITH CTE1 as 
(
    ** CTE QUERY **
),
CTE2 AS 
(
    ** CTE QUERY **
)

Select
 *
FROM
        CTE1
JOIN    CTE2    on CTE1.id = CTE2.id

我认为这可能是由于用于将值与表格分离的复杂CTE所致。 CTE与之前发布的帖子(Splitting Strings with Regular Terms to Columns)非常相似,数据以(将包含在下方)

预期回报

enter image description here

感谢您的帮助。此外,如果您需要其他信息,我将包括。

目前我没有收到任何收到以下错误消息的内容

Msg 319, Level 15, State 1, Line 61
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

2 个答案:

答案 0 :(得分:2)

您的查询语法不正确。

必须是这样的:

WITH 
CTE1 AS
(
    SELECT ...
    FROM ...
)
,CTE2 AS 
(
    SELECT ...
    FROM ...
)
,CTE3 AS 
(
    SELECT ...
    FROM ...
)
,CTE4 AS 
(
    SELECT ...
    FROM ...
)
SELECT ...
FROM ...
;

但你有这样的事情:

WITH 
CTE1 AS
(
    SELECT ...
    FROM ...
)
SELECT ...
FROM ...
,CTE2 AS 
(
    SELECT ...
    FROM ...
)
SELECT ...
FROM ...
SELECT ...
FROM ...
;

我希望你能看到差异。

WITH应遵循几个CTE,然后是单个最终SELECT。您无法在查询中间使用独立的SELECT,而无需将其包装到CTE中。

答案 1 :(得分:0)

我想你应该从那开始; WITH 你错过了&#39 ;;'可能是一个问题