我有一张看起来像这样的表:
**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] 删除。
我来说两句