sql – 查找多个列的第一个非空值

前端之家收集整理的这篇文章主要介绍了sql – 查找多个列的第一个非空值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在一组很多列中获取第一个非空值.我知道我可以使用每列的子查询来完成此操作.以表演的名义,在这种情况下真的算不算,我想在单程中做到这一点.

以下列举数据:

col1     col2     col3     sortCol
====================================
NULL     4        8        1
1        NULL     0        2
5        7        NULL     3

我的梦想查询将在sortCol中排序的每个数据列中找到第一个非空值.

例如,当选择前三列的神奇聚合,按sortCol降序排序.

col1     col2     col3
========================
5        7         0

或当排序升序时:

col1     col2     col3
========================
1        4         8

有没有人知道解决方案?

解决方法

在拒绝该解决方案之前,您是否真的进行了性能测试?
SELECT
    (SELECT TOP(1) col1 FROM Table1 WHERE col1 IS NOT NULL ORDER BY SortCol) AS col1,(SELECT TOP(1) col2 FROM Table1 WHERE col2 IS NOT NULL ORDER BY SortCol) AS col2,(SELECT TOP(1) col3 FROM Table1 WHERE col3 IS NOT NULL ORDER BY SortCol) AS col3

如果这很慢,可能是因为你没有适当的索引.你有什么索引?

猜你在找的MsSQL相关文章