1
我运行下面的SQL但0的情况下,似乎总是打:滑稽的行为,某些情况下总是被击中
select
ccy.numberofdecimals,
ABS(round(ts.TRADECCY1AMOUNT, 2)),
CASE
WHEN CCY.NUMBEROFDECIMALS = 0 THEN
CONVERT(Numeric(38,0), ABS(round(TS.TRADECCY1AMOUNT, 0)))
WHEN CCY.NUMBEROFDECIMALS = 2 THEN
CONVERT(Numeric(38,2), ABS(round(TS.TRADECCY1AMOUNT, 2)))
WHEN CCY.NUMBEROFDECIMALS = 3 THEN
CONVERT(Numeric(38,3), ABS(round(TS.TRADECCY1AMOUNT, 3)))
END as 'Transaction Amount',
FROM
blah blah blah
然而,我的结果集永远是:
当我除去0小数箱子,它产生正确的结果。任何人有任何想法为什么这个案例总是评估0的情况?
谢谢!
你不能有一个具有不同数据类型的列,既可以是'Numeric(38,0)','Numeric(38,2)'或'Numeric(38,3)',所以它将第一个数据类型赋值给你列上的所有行 – Lamak 2012-07-20 19:30:05
@Lamak - 你可以将一个分支转换为'sql_variant'数据列表,然后它会给出想要的结果。尽管这看起来像表现层应该处理的东西。 – 2012-07-20 19:33:51
@MartinSmith - 你说得对,尽管在我脑海里'sql_variant'仍然是一个数据类型。 – Lamak 2012-07-20 19:37:37