IMT*_*Man 0 sql sql-server-2012
我试图找到SQL命令做某事但我不知道如何解释它所以我将使用一个例子.我有一张像这样的桌子:
| one | two | three | four |
|-----|-----|-------|------|
| a | h | i | j |
| b | k | l | |
| c | m | n | o |
| d | p | | |
| e | q | | |
| f | r | s | |
| g | t | | |
Run Code Online (Sandbox Code Playgroud)
我需要创建新的列,从右侧获取第一个非空列,并将其反向上升并加入/连接字段.
| one | 1-up | 2-up | 3-up |
|-----|------|------|---------|
| a | j | j, i | j, i, h |
| b | l | l, k | |
| c | o | o, n | o, n, m |
| d | p | | |
| e | q | | |
| f | s | s, r | |
| g | t | | |
Run Code Online (Sandbox Code Playgroud)
因为b,列four没有数据,它three用作第一个值.其他行也一样.
我希望这是有道理的.我不知道怎么解释这个.
你可以COALESCE像这样使用:
select one, COALESCE(four,three,two,'') as '1-up',
COALESCE(four+','+three,three+','+two,'') as '2-up',
COALESCE(four+','+three+','+two,'') as '3-up'
from Table1
Run Code Online (Sandbox Code Playgroud)
SQL Fiddle链接在这里