Mysql 在SQL查询中将列设置为第100个十二月

Mysql 在SQL查询中将列设置为第100个十二月,mysql,sql,decimal,Mysql,Sql,Decimal,我这里有一个差异报告查询,我需要“差异”在差异列中不包含10个小数点。将方差结果四舍五入到第100位最方便的方法是什么 WITH A AS ( select A.FACTORY, A.JOB_NUMBER, A.PROCESS_STAGE, A.PART_CODE, B.PART_DESC_1, A.INPUT_QTY_STD, A.QUANTITY_INPUT, A.QUANTITY_OUTSTANDING, A.INPUT_QTY_ACTUAL, (A.QUANTITY_OUTSTANDIN

我这里有一个差异报告查询,我需要“差异”在差异列中不包含10个小数点。将方差结果四舍五入到第100位最方便的方法是什么

WITH A AS
(
select
A.FACTORY,
A.JOB_NUMBER,
A.PROCESS_STAGE,
A.PART_CODE,
B.PART_DESC_1,
A.INPUT_QTY_STD,
A.QUANTITY_INPUT,
A.QUANTITY_OUTSTANDING,
A.INPUT_QTY_ACTUAL,
(A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)) as variance,
A.ACTUAL_CLOSE_DATE

from 
(select * from [man_prod].[dbo].[JOB_STAGE_LINES]
 where JOB_NUMBER in (select JOB_NUMBER from JOB_OUTPUTS where 
 BF_QTY_ACTUAL<>0 
 and ABS(DATEDIFF(HOUR,ACTUAL_CLOSE_DATE,GETDATE())) < 12 and  STATUS_FLAG='C'
 )) A 
 join fin_prod.dbo.PRODUCT_MASTER B 
 ON A.PART_CODE=B.PART_CODE
 WHERE 
 A.INPUT_QTY_STD<>0 and 
 A.QUANTITY_OUTSTANDING <>0
)

 SELECT * FROM A WHERE A.variance >10.000000 OR A.variance <-10
 order by PROCESS_STAGE asc ,PART_CODE asc, variance desc ;
方差列显示为00.0000000000,我需要它显示00.000或00.000000

非常感谢您的帮助

使用MySQL函数,如果是正数,则第二个参数是小数位数

ROUND((A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)), 3) as variance,
在本例中,如果值为0.0000000000,则将四舍五入到小数点后3位或0.000。

您可以使用以下选项:

或者,如果您正在寻找doublesharp建议的圆形,请使用圆形

ROUND((A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)), 3) as variance,
当我不实际舍入值时,我更喜欢使用将其转换为所需长度的小数,而只是格式化

 CONVERT(DECIMAL(10,3),10000)

问题要求四舍五入而不是截断。这将放在查询中的何处以影响差异格式?CONVERTDECIMAL10,3,A.来自A的差异,其中A.差异>10.000000或A.差异
 CONVERT(DECIMAL(10,3),10000)