簡體   English   中英

在SQL查詢中將列設置為dec的第100個

[英]Setting A Column to the 100th dec in SQL Query

我在這里有一個差異報告查詢,我需要“差異”在“差異”列中沒有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()函數,第二個參數是正數時的小數位數。

ROUND((A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)), 3) as variance,

在此示例中,如果值為0.0000000000 ,則將四舍五入到小數點后三位或0.000

您可以使用TRUNCATE選項:

TRUNCATE((A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)), 3) as variance,

或使用ROUND(如果您要舍入)(如doublesharp所建議)

ROUND((A.QUANTITY_OUTSTANDING*100/NULLIF(A.INPUT_QTY_STD,0)), 3) as variance,

當我實際上不舍入該值而只是格式化時,我更喜歡使用Convert將其轉換為所需長度的小數。

 CONVERT(DECIMAL(10,3),10000)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM