gen*_*nie 1 sql t-sql sql-server
我有一个看起来像这样的表:
**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
Run Code Online (Sandbox Code Playgroud)
我希望它以这种形式改变:
**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
Run Code Online (Sandbox Code Playgroud)
我写的查询是:
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
Run Code Online (Sandbox Code Playgroud)
如果我们有10列,那么我认为这可能不是一个有效的方式来写这个.
你能帮我找到更好的解决方案吗?
谢谢.
我认为这更简单:
select (col1 + coalesce('/' + col2, '') + coalesce('/' + col3, '') +
coalesce('/' + col4, '') + coalesce('/' + col5, '')
)
Run Code Online (Sandbox Code Playgroud)
这假设col1始终具有值.
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |