嗨,我試圖將兩個CTE表達式合併爲單個,因爲它們都具有幾乎相同的連接表。我怎麼能做到這一點?你的評論非常有價值。如何將兩個CTE結合到單個select語句中
SELECT wf.WorkflowID
,COALESCE(STUFF((
SELECT distinct ''; '', '''' + cOPF.WorkflowLinkID
FROM Client_1_Workflow mopf`enter code here`
join Client_1_Workflow_Cell cOPF WITH(NOLOCK) on mopf.WorkflowID = cOPF.WorkflowLinkID
join Client_1_Workflow iwf WITH(NOLOCK) on cOPF.WorkflowID = wf.WorkflowID
where iwf.WorkflowID = wf.WorkflowID
FOR XML PATH(''''),TYPE).value(''(./text())[1]'',''VARCHAR(MAX)''),1,1,''''),'''') AS WorkflowID
from Client_1_Workflow wf WITH(NOLOCK)
SELECT wf.WorkflowID
,COALESCE(STUFF((
SELECT distinct ''; '', '''' +mopfn.WorkflowName
FROM Client_1_Workflow mopfn
join Client_1_Workflow_Cell cOPF WITH(NOLOCK) on mopfn.WorkflowID = cOPF.WorkflowLinkID
join Client_1_Workflow iwf WITH(NOLOCK) on cOPF.WorkflowID = wf.WorkflowID
where iwf.WorkflowID = wf.WorkflowID
FOR XML PATH(''''),TYPE).value(''(./text())[1]'',''VARCHAR(MAX)''),1,1,''''),'''') AS WorkflowName
from Client_1_Workflow wf WITH(NOLOCK)
這些不是CTE他們只是2選擇語句。然後在列定義中使用子查詢。你的選擇中沒有加入,但在你的子選項中有。無論如何,只需將動態列從第二個複製到頂端1,以使分隔字符串與現在相同,您仍然需要兩個子查詢,而無需試圖加入任何東西。 – Matt
只需選擇...,cOPF.WorkflowLinkID ,mopfn.WorkflowName ....而不是一個語句中的LinkID而另一個語句中的WorkflowName。展望未來,如果您簡化了示例並澄清了這些陳述之間的差異可能會有所幫助,這可能會有所幫助。 – Missy
@missy他的COALESCE(STUFF)動態列是將查詢內的所有行連接到單個(在本例中)分號分隔的字符串的機制,因此在子選擇中更改任何內容都會改變分隔字符串的意圖和值。所以選擇...工作和名稱不起作用 – Matt