2016-08-15 59 views
2

這將是一個漫長的,所以我很抱歉。我有一個搜索,我可以找到任何適合我遇到的錯誤的法案。加入兩個CTE與樞軸

我目前需要弄清楚如何連接兩個CTE,這兩個CTE都被旋轉以允許將數據縫合回表中。

不幸的是,我無法將表格更新爲所需的正確格式,因爲數據必須在其原始設計中維護以用於審計目的。

目前CTES的是

CTE1文件:

  • ID
  • REF
  • 用戶名
  • SubmitDate
  • SubmitBy
  • A1
  • A2
  • A3
  • A4
  • A5
  • 評論

CTE2字段:

  • ID
  • Q1
  • Q2
  • Q3
  • Q4
  • 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的極爲相似,一前一後我做了(​​)數據被轉動(包括以下)

預期收益

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. 
+0

什麼是當前的結果,並請標記的RDBMS參與 – TheGameiswar

+0

能否請您粘貼整個代碼,使一些人可以分析和檢查 – TheGameiswar

+0

上傳TheGameisWar – Merenix

回答

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中。

+0

嗨伴侶,謝謝,我可以看到你話說。問題是現在數據在select語句上非常分散,最後可能會在兩個單獨的級別上進行轉換。 – Merenix

+0

@Merenix,抱歉,試圖真正理解你的查詢所做的是一個非常不同的問題。整理出基本的語法問題,然後嘗試提出另一個問題。顯示一些重現問題的示例數據,顯示您期望的結果,顯示當前查詢的結果與預期結果的不同之處。 –

+0

不要說對不起隊友,你試圖幫助我。你應該說的最後一件事是對不起。好消息是我得到它回報我的預期。由於我們無法提供正確的解決方案,因此此查詢一直是噩夢般的情況。再次感謝隊友。 +1並接受了投票。幾乎想要把它賞金並再次接受;) – Merenix

0

我想你應該開始爲; WITH 你錯過了';'可能這是一個問題