2017-05-24 101 views
0

我正在爲一位客戶編寫一個導出文件,他們要求所有字段的前0位都是10位數字。除了兩個領域,我已經在所有領域做過這方面的工作。我使用此查詢:需要一個10位數的小數點後兩位數

SELECT RIGHT('0000000000'+ISNULL(RTRIM(a.tqtyshp),''),10)as tqtyshp, RIGHT('0000000000'+ISNULL(RTRIM(a.price),''),11) AS price, 
FROM artran a 
LEFT JOIN arcust b ON a.custno = b.custno 
WHERE invdte BETWEEN DATEADD("d",-7,GETDATE()) and GETDATE()+5 AND code = '127' 

我得到如下結果:

003.000000 00034.64000 
003.000000 00029.96000 
003.000000 00032.65000 
003.000000 00031.58000 
003.000000 00022.18000 

我需要的結果是這樣的:

00000003.00 00000034.64 
00000003.00 00000029.96 
00000003.00 00000032.65 
00000003.00 00000031.58 
00000003.00 00000022.18 

有問題的領域被格式化爲十進制(15,6)

這與我昨天問的問題類似,但在這個問題中,我嘗試格式化小數位。另一個問題,我只是想獲得總字符數分至10

+0

'重複( '0',11 - LEN(youField))+ CAST(yourField爲varchar)作爲FieldName' – xQbert

+3

我不認爲這個問題是另一個問題的重複。這個問題與另一個完全不同。 –

+0

這不是重複的。這個問題的更好答案是在SSRS中進行格式化,而不是在SQL中進行格式化。 –

回答

0

如何

SELECT 
    RIGHT('0000000000' + cast(a.tqtysh AS varchar), 10) as tqtyshp, 
    RIGHT('0000000000'+ISNULL(CAST(a.price AS varchar),''),11) AS price, 
FROM 
    artran a 
LEFT JOIN arcust b ON a.custno = b.custno 
WHERE 
    invdte BETWEEN DATEADD("d",-7,GETDATE()) and GETDATE()+5 
AND code = '127' 
+0

仍給我同樣的結果。 – IowaMatt

相關問題