我试图找到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 | | |
我需要创建新的列,从右侧开始采用第一个非空列,并将其反转并加入/连接字段。
| 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 | | |
对于b
,由于列four
没有数据,因此它使用three
作为第一个值。其他行也一样。
我希望这是有道理的。我不知道怎么解释这个。
答案 0 :(得分:5)
您可以像这样使用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
SQL小提琴链接Here