Sql server 从格式化的TSQL语句生成0或0.00 NULL的货币值
我有下面的SQL语句Sql server 从格式化的TSQL语句生成0或0.00 NULL的货币值,sql-server,tsql,Sql Server,Tsql,我有下面的SQL语句 SELECT DISTINCT ItemID, Taxlines = STUFF((SELECT CHAR(182) + RTRIM(IsNull(TT.Code, '')) + '$' + RTRIM(IsNull(TaxLink.BaseAmount, '')) + '$' + RTRIM(IsNull(TaxLink.BaseQuantity, '')) + '$' + RTRIM(IsNull(TR.Code, ''
SELECT DISTINCT
ItemID,
Taxlines = STUFF((SELECT CHAR(182) + RTRIM(IsNull(TT.Code, '')) + '$' + RTRIM(IsNull(TaxLink.BaseAmount, '')) +
'$' + RTRIM(IsNull(TaxLink.BaseQuantity, '')) + '$' + RTRIM(IsNull(TR.Code, '')) + '$' + RTRIM(IsNull(TOC.Code, '')) +
'$' + RTRIM(IsNull(TaxLink.Amount, '')) + '$' + RTRIM(IsNull(TPM.Code, ''))
FROM
[Declaration].[Taxline] [TaxLink]
LEFT OUTER JOIN
Declaration.TaxType TT ON TT.TaxTypeID = TaxLink.TypeID
LEFT OUTER JOIN
Declaration.TaxRate TR ON TR.TaxRateID = TaxLink.RateID
LEFT OUTER JOIN
Declaration.TaxOverrideCode TOC ON TOC.TaxOverrideCodeID = TaxLink.OverrideCodeID
LEFT OUTER JOIN
Declaration.TaxPaymentMethod TPM ON TPM.TaxPaymentMethodID = TaxLink.PaymentMethodID
WHERE
Tax.ItemID = ItemID
FOR XML PATH('')), 1, 1, '')
FROM
[Declaration].[Taxline] Tax
WHERE
Tax.ItemID IS NOT NULL
产生如下输出:
A00$0.00$0$F$$0.00$D¶B00$0.00$0$S$$0.00$D
我需要将任何货币值0或0.00替换为NULL或“”不介意哪个
这不包括A00或B00,但我需要保留$separator
因此,上面的示例需要如下所示:
A00$$$F$$$D¶B00$$0$S$$$D
来自【申报】【税种】税
Select Distinct ItemID,
Taxlines = STUFF(( Select CHAR(182) + CASE WHEN TT.Code IS NULL THEN '' ELSE TT.Code END
+ '$' + RTRIM(CASE WHEN TaxLink.BaseAmount IS NULL THEN '' ELSE CAST(TaxLink.BaseAmount AS nvarchar(15)) END)
+ '$' + RTRIM(CASE WHEN TaxLink.BaseQuantity IS NULL THEN '' ELSE CAST(CAST(TaxLink.BaseQuantity AS decimal(15,3)) AS nvarchar(15)) END)
+ '$' + RTRIM(CASE WHEN TR.Code IS NULL THEN '' ELSE TR.Code END)
+ '$' + RTRIM(CASE WHEN TOC.Code IS NULL THEN '' ELSE TOC.Code END
+ '$' + RTRIM(CASE WHEN TaxLink.Amount IS NULL THEN '' ELSE CAST(TaxLink.Amount AS nvarchar(15)) END)
+ '$' + RTRIM(CASE WHEN TPM.Code IS NULL THEN '' ELSE TPM.Code END))
FROM [Declaration].[Taxline] [TaxLink]
LEFT OUTER JOIN Declaration.TaxType TT on TT.TaxTypeID = TaxLink.TypeID
LEFT OUTER JOIN Declaration.TaxRate TR on TR.TaxRateID = TaxLink.RateID
LEFT OUTER JOIN Declaration.TaxOverrideCode TOC on TOC.TaxOverrideCodeID = TaxLink.OverrideCodeID
LEFT OUTER JOIN Declaration.TaxPaymentMethod TPM on TPM.TaxPaymentMethodID = TaxLink.PaymentMethodID
WHERE Tax.ItemID = ItemID
FOR XML PATH('')
), 1, 1, '')