我有一个包含项目数据的表格,它最简单的形式包括项目编号和类别。商品编号可以分为多个类别,但不是所有商品都属于每个类别:
Item category
1111 A
1111 B
1111 C
2222 A
3333 B
3333 C
我必须以单个商品编号及其相关类别的形式将此数据放入第三方的Feed中。 Feed布局无法更改。
因此,对于上述内容,Feed必须包含以下内容
1111,A,B,C
2222,A
3333,B,C
有谁知道如何做到这一点。我已经融入了一个小组,卷起来,转动一团糟,可以使用一些帮助。
感谢
答案 0 :(得分:0)
您必须使用GROUP_CONCAT
功能。它允许从多个(分组)连接值
使用GROUP BY
语句时的行。
阅读更多here。
好的,当您使用MS服务器时,我认为您将采用以下方法Simulating group_concat MySQL function in Microsoft SQL Server 2005?
答案 1 :(得分:0)
这是你如何获取该列表。
SELECT item,category FROM item_category WHERE item="1111"
但我怀疑你的数据库设计和你的要求。
像[1111,A,B,C],[2222,B]这样的列表...你必须在你的业务逻辑中操纵
答案 2 :(得分:0)
我做了功能,并且我实现了你想要的结果。希望以下解决方案适合您。
CREATE FUNCTION GetCategory
(@Item As integer) Returns nvarchar(max) As BEGIN
Declare @RetVal as nvarchar(max) = ''
Declare @Category as nvarchar(40)
DECLARE db_GetString CURSOR FOR
SELECT MyTable.Category
FROM MyTable
WHERE MyTable.Item = @Item
OPEN db_GetString
FETCH NEXT FROM db_GetString INTO @Category
WHILE @@FETCH_STATUS = 0
BEGIN
SET @RetVal = @RetVal + ',' + @Category
FETCH NEXT FROM db_GetString INTO @Category
END
CLOSE db_GetString
DEALLOCATE db_GetString
Return Substring(@RetVal,2, Len(@RetVal)) END
GO
选择项目,dbo.GetCategory(Item)作为MyTable.Item的类别FROm MyTable GROUP