【发布时间】:2019-07-01 12:46:48
【问题描述】:
我有一张如下表:
+-------------------------+------+------+------+------+
| Date | A | B | C | D |
+-------------------------+------+------+------+------+
| 2010-11-16 10:02:00.000 | 10 | NULL | NULL | NULL |
| 2010-09-21 00:00:00.000 | 86 | 14 | NULL | 17 |
| 2010-07-27 00:00:00.000 | 125 | 12 | NULL | 11 |
| 2010-05-29 15:24:00.000 | NULL | NULL | 1250 | NULL |
+-------------------------+------+------+------+------+
我需要一个查询来提取每列的第一个非空值。某种“垂直合并”。
期望的结果是:
+-------------------------+------+------+------+------+
| Date | A | B | C | D |
+-------------------------+------+------+------+------+
| 2010-11-16 10:02:00.000 | 10 | 14 | 1250 | 17 |
+-------------------------+------+------+------+------+
表格按日期排序 (desc)
实际的表有更多的列(40)和行(最多 5000)
编辑:
我的实际表有更多的列和行(假设大约 40 列和多达 5000 行)。我担心多个 order-by 查询可能会降低查询的性能。但是,如果没有更清洁的解决方案出现,我会去的。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 null