2010-12-10 37 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