删除聚合中的子字符串

时间:2016-01-11 15:47:30

标签: sql netezza

我正在数据仓库中工作,并将3列与以下内容组合在一起:

CAST(
    ISNULL(PORCH_TYPE_1,'') || 
    CASE WHEN PORCH_TYPE_2 IS NULL THEN '' ELSE ', ' END || 
    ISNULL(PORCH_TYPE_2,'') || 
    CASE WHEN PORCH_TYPE_3 IS NULL THEN '' ELSE ', ' END || 
    ISNULL(PORCH_TYPE_3,'') AS VARCHAR(250)
    ) AS PORCH_TYPE,

这是有效的,除了结果,我最终会得到一些看起来像的东西:

  

Open Porch,None,None

  

无,无,开放门廊

我需要做的是删除两个

  

  

,无

我将如何在同一列/声明中执行此操作?

1 个答案:

答案 0 :(得分:1)

一种方法是将逗号连接到每个有效门廊类型的末尾。然后使用TRIM()删除最终的尾随逗号:

TRIM(TRAILING ',' FROM
      ((CASE WHEN PORCH_TYPE_1 <> 'None' THEN PORCH_TYPE_1 || ',' END) || 
       (CASE WHEN PORCH_TYPE_2 <> 'None' THEN PORCH_TYPE_2 || ',' END) || 
       (CASE WHEN PORCH_TYPE_3 <> 'None' THEN PORCH_TYPE_3 || ',' END)
      )