2010-12-10 47 views
1

我試圖從表中找到相關信息,並將這些結果(連同其他無關結果)作爲較大查詢的一部分在一行中返回。在主查詢中的一列中返回多個值

我已經試過使用這個例子,修改我的數據。
How to return multiple values in one column (T-SQL)?
但我不能讓它工作。它不會提取任何數據(我確定它是用戶[me]錯誤)。

如果我直接使用TempTable查詢表,我可以正確地得到結果。

DECLARE @res NVARCHAR(100) 
SET @res = '' 
CREATE TABLE #tempResult (item nvarchar(100)) 
INSERT INTO #tempResult 
SELECT Relation AS item 
FROM tblNextOfKin 
WHERE ID ='xxx' AND Address ='yyy' 
ORDER BY Relation 
SELECT @res = @res + item + ', ' from #tempResult 
SELECT substring(@res,1,len(@res)-1) as Result 
DROP TABLE #tempResult 

注意上面的WHERE線,XXXYYY將變化基於該函數的輸入條件。但既然你不能在一個函數中使用TempTables ...我被卡住了。

我試圖查詢的表中的相關字段如下。
tblNextOfKin
ID - VARCHAR(12)
名稱 - VARCHAR(60)
關係 - VARCHAR(30)
地址 - VARCHAR(100)

我希望這是足夠的理智......我看到了在另一篇文章中適合的表達。
我的SQL-fu不太好。

一旦我得到一個工作函數,我會將它放到我正在處理的SSIS包的主查詢中,該查詢從其他許多表中提取數據。

如果需要,我可以提供更多詳細信息,但該網站說保持簡單,我試圖這樣做。

謝謝!

後續行動(因爲當我在下面的響應中添加註釋時,我無法編輯格式)
我需要能夠從不同列中獲取結果。
ID名稱關聯地址
1,邁克,SON,100主街
1,薩拉,DAU,100主街
2,蒂姆,SON,123南大街
無論是前兩個人住在同一地址,所以如果我查詢ID ='1'和地址='100 Main St.'我需要的結果看起來像...
「DAU,SON」

回答

0

Mysql已經GROUP_CONCAT

SELECT GROUP_CONCAT(Relation ORDER BY Relation SEPARATOR ', ') AS item 
FROM tblNextOfKin 
WHERE ID ='xxx' AND Address ='yyy' 

您可以

SELECT ID, Address, GROUP_CONCAT(Relation ORDER BY Relation SEPARATOR ', ') AS item 
FROM tblNextOfKin 
GROUP BY ID, Address 

這樣做對整個表(假設ID不是唯一的)

注意:作爲中間步驟,這通常是不好的做法,這隻能作爲演示文稿的最終格式才能接受(否則,您最終會取消ungroupi NG它這將是痛苦)

+0

看起來會工作,但是是好還是壞,我們使用的是Microsoft SQL。感謝您的答覆。 – Scottster 2010-12-10 20:07:47

+0

啊,對不起..我讀了我的SQL福,並閱讀它爲mysql fu:D – Unreason 2010-12-10 20:42:03

0

我認爲你需要像這樣(SQL服務器):

SELECT stuff((select ',' +Relation 
    FROM tblNextOfKin a 
    WHERE ID ='xxx' AND Address ='yyy' 
    ORDER BY Relation 
    FOR XML path('')),1,1,'') AS res; 
+0

我不認爲這將符合我的需求。 – Scottster 2010-12-10 20:20:48

+0

我不認爲這將符合我的需求。當我查找STUFF的語法時,它顯示「STUFF(字符表達式,開始,長度,字符表達式)」 其中Character_expression是一個字符串,第二個Character_expression正在插入到「開始」位置的第一個字符串中。 我需要能夠從不同的列中獲得結果。 身份證姓名關係地址 1,MIKE,SON,100 Main St. 1,Sara,DAU,100 Main St. 2,TIM,SON,123 South St 前兩個人住在同一個地址,我需要的結果似乎... 「1 DAU,SON」 – Scottster 2010-12-10 20:34:28