2014-12-04 52 views
0

我有一個記錄集,我想將所有表變量值合併到導致多個記錄集的單個記錄集。單個記錄具有多個表變量值的多個結果T-SQL

例如:我有一個表與列C1,C2,C3

declare @fnum table (fnum varchar(10)) 

insert into @fnum 
select xc1 from x where xc='some condition' ---(results in multiple records) 

select c1, c2, c3 , (select fnum from @fnum) from A where c3='some condition' 

表中返回C3條件的單個記錄。但是當我做最後一次選擇時,它應該顯示爲每個表變量值設置的多個記錄。我不想使用任何循環。我如何處理它?

+0

爲什麼不交叉連接表x和A以獲取所需的所有值? '從c交叉連接x中選擇c1,c2,c3,xc1,其中xc ='某些條件'和c3 ='某些條件'' – 2014-12-04 09:20:06

+0

是的,我們可以使用交叉連接,但是在我的需求表值中通過多個if條件。 – Thej 2014-12-04 09:51:03

回答

0

嘗試以下操作:

select c1, c2, c3 , (STUFF((SELECT ', ' + fnum FROM @fnum 
    FOR XML PATH(''), TYPE, ROOT).value('root[1]','nvarchar(max)'), 1, 2, '')) from A where c3='some condition' 

你可以把任何分隔符,而不是 '' 查詢。但不要忘記調整STUFF函數的長度參數。這裏','由2個字符組成,所以我爲STUFF函數設置長度= 2。

+0

它使用分隔符返回單行中的所有值。我需要具有不同表變量值的多行。 – Thej 2014-12-04 09:03:21

+0

哦對不起,沒有理解任務的權利。我認爲只有這種解決方案的用於現在: SELECT FNUM, (SELECT C1 FROM A,其中C3 = '狀態'), (SELECT C2 FROM A,其中C3 = '狀態'), (SELECT C3從WHERE c3 ='條件') FROM @fnum – twinmind 2014-12-04 09:13:57