我正在使用我们最近所做的库存计数中的参考文本更新数据库中的产品库位置。某些产品有多个bin位置,因此我使用此SQL将所有bin位置拉入表中:
SELECT
SCT.ProductID,
STUFF ((SELECT ',' + ReferenceText
FROM StockCounttickets SCT2
WHERE SCT2.ProductId = SCT.ProductID
AND SCT2.StockCountID = '10873'
ORDER BY ProductID
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'), 1, 1, '') AS Products
FROM
StockCountTickets SCT
WHERE
SCT.StockCountID = '10873'
GROUP BY
ProductID ;
我得到了我想要的结果,除了一些产品在同一个地方被计算两次,所以一些结果具有相同的值两次
有没有办法摆脱重复?
答案 0 :(得分:1)
据推测,您的意思是连接列表中的重复项。
好吧,您可以使用select distinct
或group by
删除重复项:
SELECT SCT.ProductID,
STUFF( (SELECT DISTINCT ',' + SCT2.ReferenceText
FROM StockCounttickets SCT2
WHERE SCT2.ProductId = SCT.ProductID AND
SCT2.StockCountID = 10873
ORDER BY SCT2.ProductID
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'
), 1, 1, '') AS Products
FROM (SELECT DISTINCT SCT.ProductId
FROM StockCountTickets SCT
WHERE SCT.StockCountID = 10873
) SCT;
注意:
StockCountID
是一个数字,请不要使用引号进行比较。