使用 3 个表进行查询,但无法获得我想要的输出

Doing Query for with 3 tables and cant get the output how I want it

有 3 个表

.

ITEM 1---many INVENTORY 8----1 CHARACTER

我想找出在角色库存中堆叠最多的前 10 个物品,以及谁将此物品堆叠在他们的库存中。所以最后它会像 itemID 1 有 4 个堆栈,这些 charID 有项目,itemID 2 有 3 个堆栈,这些 charID 有项目。在table.

这是我尝试了一段时间后目前所处的位置

SELECT COUNT(INVENTORY.itemID) as Stacks, ITEM.itemID, CHARACTERS.charName
FROM INVENTORY
INNER JOIN ITEM
        ON INVENTORY.itemID = ITEM.itemID
INNER JOIN CHARACTERS
        ON INVENTORY.charID = CHARACTERS.charID
WHERE INVENTORY.quantity>1
GROUP BY ITEM.itemID, CHARACTERS.charName
ORDER BY  Stacks DESC
GO

我不是在一行中获取类似的数据,而是将每个字符分成一堆行。例如 table headers 是

Stacks | ITEMID | charName    
1      | 1      | Char1    
1      | 1      | Char2

但我想要的是

Stacks | ITEMID | charName    
2      | 1      | Char1,Char2

欢迎任何帮助谢谢:)。如果我的问题格式不符合标准,请发表评论,告诉我如何改进。

Sql Demo

SELECT [ITEMID], 
       LEFT(column_names , LEN(column_names )-1) AS column_names, 
       SUM([Stacks]) total_stacks  -- or COUNT() not sure which you need
FROM Table1 AS extern
CROSS APPLY
(
    SELECT [charName] + ','
    FROM Table1 intern
    WHERE intern.[ITEMID] = extern.[ITEMID]
    FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY [ITEMID], column_names;

注意:我扩展了你的案例,所以包括不同的 [itemID]

输出