如何在表上创建大量CASE语句

时间:2015-07-02 13:57:57

标签: sql sql-server case

我有下面定义的表(由视图输出)。可以看出,有许多值为-0.01,这些值对用户来说只是噪音。

鉴于有48列,创建48个单独的CASE状态会产生非常缓慢的结果。

可以使用 mass 案例来清理这些数据,即:

  select 
      CASE
      WHEN * = -0.01
        THEN 0
      ELSE *
      END
  from aTable

数据:

enter image description here

1 个答案:

答案 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