1
我曾问过同一模式的问题。这一次我的要求是从表中获取输出。对于模式,请参阅该question显示表格中的逗号分隔值
现在我想从映射表查询公司ID和显示的类别为逗号分隔值的所有子类别。情景就像这样。 如果我以公司标识1登录并且我有3个不同的类别。然后在我的网格,它会显示:
**Category** **Subcategory**
Category1 SubCat1, Subcat2, Subcat3 and so on
Category2 SubCat4, Subcat62, Subcat6 and so on
我现有的查询是这样的:
SELECT tbl_Category.Name , dbo.fnGetCSValues(@CompanyId) AS Subcategory
FROM tbl_Company_Category_Map
INNER JOIN tbl_Category ON tbl_Company_Category_Map.CategoryId = tbl_Category.Id
INNER JOIN tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE tbl_Company_Category_Map.CompanyId = @CompanyId
GROUP BY tbl_Category.Name
随着UDF
ALTER FUNCTION [dbo].[fnGetCSValues] (@Id INT)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @List VARCHAR(8000)
SELECT @List =(SELECT tbl_SubCategory.Name
FROM tbl_Company_Category_Map INNER JOIN
tbl_Category ON tbl_Company_Category_Map.CategoryId = tbl_Category.Id INNER JOIN
tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE tbl_Company_Category_Map.CompanyId = @Id
ORDER by tbl_SubCategory.Name
FOR XML PATH(''))
RETURN LEFT(@List,(LEN(@List) -1))
END
参见:HTTP://archive.msdn .microsoft.com/SQLExamples/Wiki/View.aspx?title = createacommadelimitedlist – Magnus
那么问题是什么? UDF不能为您带来正确的结果,还是其他的...? –
我得到了同样的行... –