使用 case 语句的 SQL 连接

精灵

我有一张看起来像这样的表:

**ID    col1  col2  col3  col4  col5**    
1       abc   NULL  NULL  NULL  NULL    
2       ght   cde   NULL  NULL  NULL    
3       atr   dgf   aft   NULL  NULL     
4       asd   rty   tyu   xyz   NULL     
5       abc   pqr   xyz   rst   rty    
6       qwe   rty   ghj   rty   tyu  

我希望它以这种形式改变:

**ID    NewCol**    
1   abc    
2   ght/cde    
3   atr/dgf/aft    
4   asd/rty/tyu/xyz    
5   abc/pqr/xyz/rst/rty    
6   qwe/rty/ghj/rty/tyu   

我写的查询是:

     SELECT ID,     
    NewCol = CASE WHEN col1 IS NOT NULL AND col2 IS NULL THEN col1    
                WHEN col1 IS NOT NULL  AND col3 IS NULL THEN col1+'/' + col2    
                WHEN col1 IS NOT NULL AND col4 IS  NULL THEN col1+'/'+ col2 + '/' + col3    
                WHEN col1 IS NOT NULL AND col5 IS NULL THEN col1+'/' + col2 + '/' + col3+ '/' + col4     
                WHEN col1 IS NOT NULL AND col5 IS not NULL THEN col1+'/' + col2 + '/' + col3+ '/' + col4 + '/' + col5     
                ELSE NULL     
  END     
   FROM dbo.Temp 

如果我们有 10 列,那么我认为这可能不是编写此内容的有效方法。
你能帮我找到一个更好的解决方案吗?
谢谢。

戈登·利诺夫

我认为这更简单:

select (col1 + coalesce('/' + col2, '') + coalesce('/' + col3, '') + 
        coalesce('/' + col4, '') + coalesce('/' + col5, '')
       )

这假设col1总是有一个值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章