Ram*_*esh 1 sql sql-server-2008-r2
在Sql中,我得到如下格式的结果。总共我有6列。第1行第6列中包含该值,第二行第5和第6行中包含该值。但是我需要检查每个单元格,如果上一列不包含该值,则意味着我需要在第一列中使用它。
实际结果
a b c d e f
1
1 2
1 2 3
Run Code Online (Sandbox Code Playgroud)
预期结果:-
a b c d e f
1
1 2
1 2 3
Run Code Online (Sandbox Code Playgroud)
请张贴一些好的答案(我正在使用SQL Server 2008-R2)
另一种方式,类似于@Astander的方式(但使用OUTER APPLY代替PIVOT / UNPIVOT):
SELECT
a = MIN(CASE WHEN y.rn = 1 THEN y.val END),
b = MIN(CASE WHEN y.rn = 2 THEN y.val END),
c = MIN(CASE WHEN y.rn = 3 THEN y.val END),
d = MIN(CASE WHEN y.rn = 4 THEN y.val END),
e = MIN(CASE WHEN y.rn = 5 THEN y.val END),
f = MIN(CASE WHEN y.rn = 6 THEN y.val END)
FROM t
OUTER APPLY
( SELECT
x.val,
rn = ROW_NUMBER() OVER (ORDER BY rn)
FROM
( VALUES
(a,1), (b,2), (c,3), (d,4), (e,5), (f,6)
) x (val, rn)
WHERE x.val IS NOT NULL
) y
GROUP BY
t.tid ;
Run Code Online (Sandbox Code Playgroud)
在SQL-Fiddle中测试
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |