При обновлении данных по таблице temparts массовое значение изменилось после точки с плавающей запятой ?
Я работаю на SQL Server 2012. Когда я использую материал для сбора данных, разделенных запятой, я получаю
странные результаты. Массовое число, разделенное запятой в таблице #tmpParts
Не совсем то, что существует в исходной таблице #TempPC.
Подводя итог моей эмиссионной массе для части 5223986-2 для алюминия
is 580.28613 в таблице #TempPC
is 580.286 в таблице #tmpParts
Почему значения изменились для массы и как разделять запятую точно так же, как входные данные для значений массы #Temppc .
Также изменилось еще одно значение
CREATE TABLE #TempPc ( PartNumber nvarchar(50), Substance nvarchar(100), Mass Float, ) INSERT INTO #TempPc (PartNumber, Substance, Mass) VALUES ('5223986-2', 'Copper', 33.73757), ('5223986-2', 'Zinc', 12824.526), ('5223986-2', 'Aluminum', 580.28613), ('5223986-5', 'Copper', 33.73756), ('5223986-5', 'Zinc', 12824.52563), ('5223986-5', 'Aluminum', 580.28612) CREATE TABLE #tmpParts ( id INT IDENTITY, PartNumber nvarchar(50), cnt INT, strSubstances NVARCHAR(MAX), strMass NVARCHAR(MAX) ) INSERT INTO #tmpParts (PartNumber, cnt) SELECT t.PartNumber, COUNT(t.Substance) FROM #TempPC t GROUP BY t.PartNumber
Но я получаю неправильный результат по массе, потому что он отображает данные двух частей одной и той же массы, разделенных запятой на две части .
Но в таблице #TempPC две части различаются по значению массы:
id PartNumber cnt strSubstances strMass 1 5223986-2 3 Aluminum,Copper,Zinc 33.7376,580.286,12824.5 2 5223986-5 3 Aluminum,Copper,Zinc 33.7376,580.286,12824.5
Конечный результат мне нужны одинаковые числа на #TempPC с разделенными запятыми на таблице #tmpParts на strMass :
id PartNumber cnt strSubstances strMass 1 5223986-2 3 Aluminum,Copper,Zinc 33.73757,580.28613,12824.526 2 5223986-5 3 Aluminum,Copper,Zinc 33.73756,580.28612,12824.52563
Что я уже пробовал:
UPDATE p SET p.strSubstances = CAST (STUFF((SELECT ',' + CAST(t.Substance AS VARCHAR(3500)) FROM #TempPC t WHERE t.PartNumber = p.PartNumber ORDER BY t.Substance FOR XML PATH('')), 1, 1, '') AS NVARCHAR(3500)), p.strMass = CAST (STUFF((SELECT ',' + CAST(t.Mass AS VARCHAR(3500)) FROM #TempPC t WHERE t.PartNumber = p.PartNumber ORDER BY t.Mass FOR XML PATH('')), 1, 1, '') AS NVARCHAR(3500)) FROM #tmpParts p