代码之家  ›  专栏  ›  技术社区  ›  DC07

SQL基于具有现有值的其他列创建列

  •  0
  • DC07  · 技术社区  · 6 年前

    .

    2 回复  |  直到 6 年前
        1
  •  2
  •   Gordon Linoff    6 年前

    使用一些 CASE STUFF 删除前导 -

    SELECT
        STUFF(
            (
                CASE WHEN T.Col1 IS NOT NULL THEN '-Col1' ELSE '' END +
                CASE WHEN T.Col2 IS NOT NULL THEN '-Col2' ELSE '' END +
                CASE WHEN T.Col3 IS NOT NULL THEN '-Col3' ELSE '' END 
            ),
            1, 1, ''),
        T.Col1,
        T.Col2,
        T.Col3
    FROM
        YourTable AS T
    
        2
  •  0
  •   James    6 年前

    select 
      left(t.Grp,len(Grp)-1) as Grp,
      t.col1,t.col2,t.col3
    from (    
      select col1, col2, col3,
        case when col1 is null then '' else 'col1-' +
        case when col2 is null then '' else 'col2-' +
        case when col3 is null then '' else 'col3-'
        as Grp
      from your_table
      ) t