level 6
问题不在于是用CTE还是用视图, 你看下报错信息,在将varchar值‘6M’转换成INT时失败,很显然6M不是一个有效的数字, 所以转换失败。 你的where 字句后面的covernt 有问题.
不知道你用的是什么版本,如果是2012或之后的版本的话,可以使用try_parse 方法。不是合法的转换类型会转成NULL 而不报错。
select try_parse('6m' as int) --null
select try_parse('6' as int) --6
2015年01月29日 07点01分

