我有一个查询,用于比较使用CTE的周数据。它存储的一件事是百分比数据。我试图转换或转换任何等于100.00的值。
例如,结果如下所示
Name Percentage Other
App1 99.56 5.5
App2 100.00 6
我希望从100中删除零。我已经尝试了一些案例陈述,但我从未得到我正在寻找的结果。这就是我现在所拥有的。
SELECT
f.Application,
f.Percentage,
f.Other,
CASE
WHEN f.Percentage = 100.00
THEN 100
END AS Percentage
FROM Table1 f
目前,100.00的值更改为100.但是,不等于100.00的所有值都将被清除。我可以通过添加
来消除NULLELSE f.Percentage
但是100.00没有改变。
任何帮助都将不胜感激。
答案 0 :(得分:3)
正如我在评论中提到的,您不能拥有包含多种数据类型的单个SQL列。
话虽如此,在你的情况下它是否有用还有待观察,但像nvarchar
之类的字符串类型可以同时处理它们,尽管你的代码需要能够处理它们作为字符串而不是数字。
一个例子是这样的:
SELECT
f.Application,
f.Percentage,
f.Other,
CASE
WHEN f.Percentage = 100.00
THEN '100'
ELSE CAST(f.Percentage as nvarchar(10))
END AS Percentage
FROM Table1 f
Percentage
列现在属于nvarchar
类型,但它会以这种方式返回值:
Name Percentage Other
App1 99.56 5.5
App2 100 6
App3 91.23 3.5
App4 94.41 4.8
App5 100 6