使用SQL Server 2008中,我試圖讓一些列的返回回來爲$ XXX,XXX.XXTSQL鑄和金錢
這是我使用的查詢(此查詢然後一些更新只是爲了計算數字,並在年底選擇##tempshow
)
SELECT
CASE GROUPING(s.StoreID) WHEN 1 THEN '' ELSE s.StoreID END [StoreID],
CASE GROUPING(p.VendorID) WHEN 1 THEN '' ELSE p.VendorID END [VendorID],
SUM(d.Quantity) AS [UnitSold],
CAST(SUM(d.amount * d.quantity) AS DECIMAL(18,2)) AS Amount,
CAST(SUM(d.Discount) AS DECIMAL(18,2)) AS Discount,
CAST(SUM((d.Amount * d.Quantity - d.Discount)) AS DECIMAL(18,2)) AS ExtSold,
CAST(SUM(d.Cost * d.Quantity) AS DECIMAL(18,2)) AS Cost,
CAST(0 AS DECIMAL(18,2)) AS Profit,
CAST(0 AS DECIMAL(18,2)) AS OnHand,
CAST(0 AS DECIMAL(18,2)) AS OnHandRetail,
CAST(0 AS DECIMAL(18,2)) AS OnHandCost,
CAST(0 AS DECIMAL(18,2)) AS ReceivedCost,
CAST(0 AS DECIMAL(18,2)) AS ReceivedRetail,
CAST(0 AS DECIMAL(18,2)) AS ReceivedQty,
CAST(0 AS DECIMAL(18,2)) AS Margin,
CAST(0 AS DECIMAL(12,2)) AS TurnOver,
CAST(0 AS INTEGER) AS OnOrder
INTO
##tempshow
FROM
RPTrs s,
RPTrsd d,
RPIv i,
RPProducts p
WHERE
s.ReceiptNO = d.ReceiptNO and
s.StoreID = d.StoreID and
i.UPC = d.UPC and
i.StoreID = d.StoreID and
p.ProductID = i.IVProduct and
s.StoreID = '01' and
s.TRSDate > GETDATE()-20 and
p.Service = 0
GROUP BY
GROUPING SETS((s.StoreID,p.VendorID),())
將返回:
我已經試過
CAST(SUM(d.amount * d.quantity) AS MONEY) AS Amount,
和
SUM(CAST((d.amount * d.quantity) AS MONEY)) AS Amount,
預計產量(加上其他列與此相同Amount
列):
|StoreID | VendorID | UnitSold | Amount
---------------------------------------------
1 | 01 | 0000 | 0 | $0.00
2 | 01 | am | 62 | $6,275.00
3 | 01 | AO | 58 | $18,964.00
4 | 01 | payless | 6 | $1,383.36
5 | | | 126 | $26,622.36
我需要的Amount, Discount, ExtSold, Cost, Profit, OnHandRetail, OnHandCost, ReceivedCost, ReceivedRetail
是貨幣格式
也許你感到困惑_data type_和_format_。格式化,例如添加貨幣符號,數千個分隔符和一個小數點,最好留給您的應用程序。 – HABO 2013-03-20 17:31:21
不幸的是,我不能這樣做,因爲它只是一個簡單的報告功能,只需要查詢並輸出查詢內容即可 – JohnZ 2013-03-20 17:38:27
@JohnZ:那麼這個函數可以用一個稍微複雜一點代替嗎?真的,即使可以在T-SQL中實現你想要的功能,它也應該關心格式化。在這種情況下,數據庫應該只關心提供數據。 – 2013-03-20 19:29:26