gpt4 book ai didi

sql - 有没有一种方法可以通过子查询返回多个结果?

转载 作者:行者123 更新时间:2023-12-04 13:30:03 25 4
gpt4 key购买 nike

我需要从子查询返回多个结果,并且无法弄清楚。最终结果将在垂直轴上生成人员名称,并根据水平轴上的操作类别生成各种操作。因此最终结果如下所示:

----------
**NAME CATEGORY 1 CATEGORY 2**

Smith, John Action 1, Action 2 Action 1, Action 2, Action 3


----------

有没有办法在单个查询中执行此操作?
select
name,
(select action from actionitemtable where actioncategory = category1 and contact = contactid)
from
contact c
inner join actionitemtable a
on c.contactid = a.contactid

如果在该子查询中返回了多个结果,我希望能够将其显示为单个逗号分隔的字符串或操作列表等。

谢谢你。

正在使用Microsoft Sql Server 2005。

最佳答案

我为此任务使用了用户定义函数。 udf创建一个包含所有与参数匹配的元素的分隔字符串,然后从select语句调用udf,以便为记录集中的每个记录提取一个分隔列表。

CREATE FUNCTION dbo.ud_Concat(@actioncategory int, @contactid int)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @sOutput VARCHAR(8000)
SET @sOutput = ''

SELECT @sOutput = COALESCE(@sOutput, '') + action + ', '
FROM dbo.actionitemtable
WHERE actioncategory=@actioncategory AND contact=@contact
ORDER BY action

RETURN @sOutput
END

SELECT
name,
dbo.ud_Concat(category1, contactid) as contactList
FROM contact c
INNER JOIN actionitemtable a ON c.contactid = a.contactid

关于sql - 有没有一种方法可以通过子查询返回多个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com