我正在尝试从表中查找相关信息,并将这些结果(以及其他不相关的结果)作为较大查询的一部分返回到一行。
我已经尝试使用此示例,针对我的数据进行了修改
How to return multiple values in one column (T-SQL)?
但我无法让它发挥作用。它不会提取任何数据(我确定这是用户[我]错误)。
如果我使用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行, xxx 和 yyy 会根据功能的输入条件而有所不同。但由于你不能在一个函数中使用TempTables ......我被卡住了。
我想查询的表格中的相关字段如下
tblNextOfKin
ID - varchar(12)
名称 - varchar(60)
关系 - varchar(30)
地址 - varchar(100)
我希望这有足够的意义......我在另一篇文章中看到了一个适合的表达 我的SQL-fu不太好。
一旦我得到一个工作函数,我会把它放到我正在处理的SSIS包的主查询中,它正在从许多其他表中提取数据。
如果需要,我可以提供更多详细信息,但该网站说要保持简单,我试图这样做。
谢谢!!!
跟进(因为当我在下面的响应中添加评论时,我无法编辑格式)
我需要能够从不同的列中获得结果
ID名称关系地址
1,Mike,SON,100 Main St.
1,Sara,DAU,100 Main St.
2,Tim,SON,123 South St.
前两个人都住在同一个地址,所以如果我查询ID ='1'和地址='100 Main St.'我需要结果看起来像...
“DAU,SON”
答案 0 :(得分: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不是唯一的)
注意:这通常是不好的做法作为一个中间步骤,这只能作为演示文稿的最终格式化(否则你最终会取消组合,这将是痛苦)
答案 1 :(得分:0)
我认为你需要这样的东西(SQL Server):
SELECT stuff((select ',' +Relation
FROM tblNextOfKin a
WHERE ID ='xxx' AND Address ='yyy'
ORDER BY Relation
FOR XML path('')),1,1,'') AS res;