我有下面定义的表(由视图输出)。可以看出,有许多值为-0.01,这些值对用户来说只是噪音。
鉴于有48列,创建48个单独的CASE状态会产生非常缓慢的结果。
可以使用 mass 案例来清理这些数据,即:
select
CASE
WHEN * = -0.01
THEN 0
ELSE *
END
from aTable
数据:的
答案 0 :(得分:2)
如果您关注的是编写代码所需的时间,您可以使用Dynamic SQL通过引用sys表来帮助为它编写代码:
SELECT 'CASE WHEN ' + columns.NAME + ' = -.01 THEN 0 ELSE '
+ columns.NAME + ' END AS ' + columns.NAME + ', ' AS Dynamic_SQL
FROM sys.columns
INNER JOIN sys.objects ON objects.object_id = columns.object_id
WHERE objects.NAME = 'aTable'
ORDER BY column_id