需要帮助将“Pct_To_Total”列的值转换为
John, 0,36
Sophia, 0,29
Stella, 0,18
Jennifer, 0,11
只需两位小数即可,如果第三位小数大于 4,则需要将第二位小数转换为更高的值。
declare @T table
(
Name varchar(50),
Sales decimal
)
insert into @T values
('John', '50'),
('Sophia', '40'),
('Stella', '25'),
('Jennifer', '15'),
('Greg', '10')
SELECT a1.Name, a1.Sales, (a1.Sales /(SELECT SUM(Sales) FROM @T Total_Sales) ) AS Pct_To_Total
FROM @T a1, @T a2
WHERE a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
最佳答案
SELECT round (cast(0.35714285 AS DECIMAL(10,2)),2);
这给出了 0.36
您的异常(exception)结果。
我尝试了以下查询,它工作正常。
SELECT a1.Name, a1.Sales, round(cast((a1.Sales /(SELECT SUM(Sales) FROM @T Total_Sales)) AS DECIMAL(10,2)),2) AS Pct_To_Total
FROM @T a1, @T a2
WHERE a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
关于sql - 将值转换为两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646620/