Sql 合并联接表中的字段

Sql 合并联接表中的字段,sql,sql-server,tsql,Sql,Sql Server,Tsql,一个类别可以有许多产品。我必须构建StoredProcedure,它返回所有类别,并将产品中的一些数据合并到一个字段中: SP Result: idCategory Name ProductNames ProductQuantities 1 Cat1 Procut1,Product2 24,32 2 Cat2 ProductX,ProductY 0,61 SP结果: idCategory名称ProductNames产

一个类别可以有许多产品。我必须构建StoredProcedure,它返回所有类别,并将产品中的一些数据合并到一个字段中:

SP Result: idCategory Name ProductNames ProductQuantities 1 Cat1 Procut1,Product2 24,32 2 Cat2 ProductX,ProductY 0,61 SP结果: idCategory名称ProductNames产品数量 1 Cat1 Procut1,产品2 24,32 2类产品X,产品0,61 PRODUCTNAME和PRODUCTANTIONS是varchar字段,具有来自联接产品表的组合(连接)字段值。这就是我在DB中的内容:

Category table: idCategory Name 1 Cat1 2 Cat2 Product table: idProduct idCategory Name Quantity 1 1 Product1 24 2 1 Product2 32 3 2 ProductX 0 4 2 ProductY 61 类别表: ID类别名称 1类1 2类2 产品表: idProduct idCategory Name数量 1产品1 24 2 1产品2 32 3.2.x 0 4.2富有成效的61 我还希望有一个函数,它为输入参数idCategory=1返回“Product1,Product2”,如下所示:

SELECT idCategory, dbo.NamesFn(idCategory) AS ProductNames, dbo.QuantitiesFn(idCategory) AS ProductQuantities FROM Category 选择idCategory, dbo.NamesFn(idCategory)作为产品名称, dbo.QuantitiesFn(idCategory)作为产品数量 从类别 可能有一个函数返回表结果,所以连接只能执行一次,而不是在每个Fn中(因为这是一个简化的示例,在实际应用中,我必须有4-5个组合字段,将来甚至更多)


如何编写SQL/SP&Fn?我使用的是MS SQL2005

有几种使用SQL Server连接行的解决方案。看,还有

此查询生成您要求的结果集:

select c.idCategory, c.Name,
    replace(
        (select p.Name as [data()]
         from Product p
     where p.idCategory = c.idCategory
     for xml path ('')
), ' ', ', ') as ProductNames,
    replace(
        (select p.Quantity as [data()]
         from Product p
     where p.idCategory = c.idCategory
     for xml path ('')
), ' ', ', ') as ProductQuantities 
from Category c
编辑以添加: 此查询将生成以下结果:

idCategory  Name    ProductNames          ProductQuantities
1           Cat1    Product1, Product2    24, 32
2           Cat2    ProductX, ProductY    0, 61

我已经通过google找到了这些示例,但不知道必须构建返回表结果的函数,以及如何将结果包含到SP中results@TomH,但不适用于带表的函数result@Hrvoje当前位置我认为您在查找问题时遇到了问题。您应该搜索的关键字是“表值”function@jamie我喜欢看到这样有说服力的答案,这样我就可以从中学到很多东西。它不起作用。我不得不使用COALESCE和几个sql函数。但对于这个例子,我从中学到了很多