【问题标题】:Joining Two CTE's with Pivots使用 Pivots 连接两个 CTE
【发布时间】:2016-12-21 09:06:07
【问题描述】:

这将是一个很长的,所以我很抱歉。我进行了搜索,我可以找到任何符合我所犯错误的账单。

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

很遗憾,我无法将表格更新为所需的正确格式,因为出于审计目的,数据必须保持在其原始设计中。

目前CTES是

CTE1 文件:

  • 身份证
  • 参考
  • 用户ID
  • 提交日期
  • 提交者
  • a1
  • a2
  • a3
  • a4
  • a5
  • cmets

CTE2 字段:

  • 身份证
  • q1
  • q2
  • q3
  • 第四季度
  • q5

想法是在 CTE 的 1 和 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) 非常相似,其中数据是旋转的(将包括在下面)

预期回报

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

目前它没有返回任何东西我收到以下错误消息

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.

【问题讨论】:

  • 当前结果是什么,请标记所涉及的RDBMS
  • 能否请您粘贴整个代码,以便有人可以解析和检查
  • 已上传 TheGameisWar

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


【解决方案1】:

您的查询语法不正确。

它必须是这样的:

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。如果不将其包装到 CTE 中,则不能在查询中间使用独立的 SELECT

【讨论】:

  • 嗨,伙计,谢谢你,我明白你在说什么。问题是数据现在在最后的选择语句上非常分散,是否可以在两个单独的级别上进行旋转。
  • @Merenix,对不起,试图真正理解你的查询是一个非常不同的问题。整理出基本的语法问题,然后尝试再问一个问题。展示一些重现问题的示例数据,展示您期望的结果,展示您当前查询的结果与预期结果有何不同。
  • 别说对不起伙计,你是在帮我。你应该说的最后一件事是对不起。好消息是我得到了它按预期返回。此查询一直是噩梦般的场景,因为我们无法实施正确的解决方案。再次感谢队友。 +1 并接受投票。几乎想把赏金放在上面并再次接受;)
【解决方案2】:

我猜你应该从 ;WITH 开始 你错过了';'可能是个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-14
    • 2013-12-19
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多