我創建了一個CTE查詢,並且當CTE中的數據與另一個表匹配時,我設法加入了CTE。如何將CTE查詢與SQL Server 2008中的另一個表連接起來
例如,這是我的CTE查詢結果的樣子:
ID NAME REG INV CUS BR
-----------------------------------------------
1 A0001 R0001 I0001 C0001 B0001
2 A0002 R0002 I0002 C0002 B0002
3 A0003 R0003 I0003 C0003 B0003
4 A0004 R0004 I0004 C0004 B0004
這是我設法把它加入表:
ID NAME CUS
---------------------
1 TEST1 C0001
2 TEST2 C0002
3 TEST3 C0003
4 TEST4 C0004
這是我的代碼選擇CTE查詢
;WITH BaseQuery AS
(
SELECT
Id, Name, Comment,
CONVERT(XML, '<root><item>'
+ REPLACE(
REPLACE(
REPLACE(
REPLACE((SELECT Comment AS '*' FOR XML PATH('')),
'Reg:',
'</item><item type="Reg">'),
'Inv:',
'</item><item type="Inv">'),
'Cus:',
'</item><item type="Cus">'),
'Br:',
'</item><item type="Br">') + '</item></root>') CommentAsXml
FROM
GenTransaction
), Query (
SELECT
Id, Name, Comment,
Reg = LTRIM(RTRIM(bq.CommentAsXml.value('(root/item[@type="Reg"])[1]', 'VARCHAR(11)'))),
Inv = LTRIM(RTRIM(bq.CommentAsXml.value('(root/item[@type="Inv"])[1]', 'VARCHAR(11)'))),
Cus = LTRIM(RTRIM(bq.CommentAsXml.value('(root/item[@type="Cus"])[1]', 'VARCHAR(11)'))),
Br = LTRIM(RTRIM(bq.CommentAsXml.value('(root/item[@type="Br"])[1]', 'VARCHAR(11)')))
FROM
BaseQuery bq
)
選擇ArCustomer.Name,Query.Cus 從ArCustomer左加入Q上ArCustomer.Customer = Query.ArCustomer.Customer 順序uery 通過ArCustomer.Name
可以使用CTE結果只有一次,因此對於另一個使用它加入你有幾個操作tions:1.在第一個查詢中加入另一個表的CTE結果。 2.將CTE結果保存在表變量中,並與另一個表重複使用。 3.將CTE結果的第一個查詢放在另一個CTE中,並使用第二個CTE結果與另一個表 – Fabio
謝謝,我在選擇CTE查詢時遇到問題,並與其他 – tang
@tang進行比較:您有什麼問題?你是否試圖將CTE的結果加入另一個表格? –