【问题标题】:Concatenate values when greater than 0大于 0 时连接值
【发布时间】:2015-07-14 05:18:44
【问题描述】:

如果值大于 0,我需要连接多个列中的值。

例子:

Video     1  
Internet  0  
Phone     3  
Security  0  
Basic     1  

所以最终值为1 Video|3 Phone|1 Basic|

有没有比编写代码更好的方法:

    Case When Video > 0 and Internet+Phone+Security+Basic < 0 Then Video + ' Video|' 
    When Video > 0 and Internet > 0 and Phone+Security+Basic < 0 Then Video + ' Video|' + Internet + ' Internet|' 
    When Video > 0 and Phone > 0 and Internet+Security+Basic < 0 Then Video + ' Video|' + Phone + ' Phone|'

以此类推,直到每个组合都被考虑在内。

【问题讨论】:

  • 你必须先用谷歌搜索!

标签: sql sql-server database concatenation


【解决方案1】:
select
  Case When Video > 0     Then Video +     ' Video|'     else '' end +
  Case When Internet  > 0 Then Internet  + ' Internet|'  else '' end +
  Case When Phone > 0     Then Phone +     ' Phone|'     else '' end +
  Case When Security > 0  Then Security +  ' Security|'  else '' end +
  Case When Basic > 0     Then Basic +     ' Basic|'     else '' end +
from source

【讨论】:

  • 啊哈!谢谢!那是我在第一轮测试中得到的确切代码(但省略了 Else '')并且无法弄清楚为什么它不起作用,所以我认为我必须经历所有可能的情况。
  • @Doolius,else 部分不应该是null,因为当else 部分被省略时,表达式为'video'+null+'phone'+null+'basic'会导致null
猜你喜欢
  • 2012-04-13
  • 2018-12-18
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
相关资源
最近更新 更多