gpt4 book ai didi

sql - 如何找到不为空的结果?

转载 作者:行者123 更新时间:2023-12-04 06:52:21 25 4
gpt4 key购买 nike

我有一个返回 2+ 行的查询。在这些结果中有一列我们可以称之为 列X 目前。让我们看看这些示例结果:

列X
100
86
85
70
空值


例如,我得到 6 行,其中一些为空,其中一些不为空。现在我想查看这些结果并在找到一行 <> 后立即停止。空值。我怎样才能做到这一点?

事情是,它总是这样排序。因此,如果有空值,则它们位于底部。这可能是一个结果:

列X
100
86
85
70
空值


这也是:

列X
100
86
85
70


所以可以有或没有空值,无论如何,我想找到第一个非空行,在上面的例子中是 70。我认为 CTE 是一个不错的开始……但仍然缺少一些东西。这就是我获得这些行的方式:

select columnx from mytable where someid = 12345

所以 columnx 中的数字都属于一起(因为 someid)。我真的必须从该结果中获得第一个非空行。我不能只从整个 columnx 中查找不为空的第一行,我之前必须使用条件(其中 someid = 12345)。 70 只是一个例子,它也可以是 90,所以我无法从结果中得到最小值。空值总是在底部,其余的可以未排序。这也可能是一个结果:

列X
100
23
80
78
空值


在那种情况下,我想要 78。

最佳答案

我会使用 CTE(公用表表达式)在列旁边拉出一个索引(使用 ROW_NUMBER 函数)。

然后您可以使用嵌套的 select找到最小的空索引,然后选择下面的所有内容。

WITH cteMyTable AS
(
SELECT RUW_NUMBER() OVER (ORDER BY (ColZ) as [Rank], ColumnX
FROM MyTable
)

SELECT [Rank], ColumnX
FROM cteMyTable WHERE [Rank] <
(SELECT MIN([Rank]) FROM cteMyTable WHERE ColumnX IS NULL)

编辑您的进一步信息,如果您只想要 ColumnX 是最小值的所有行,您可以执行以下操作:
SELECT * 
FROM MyTable
WHERE ColumnX = (SELECT MIN(ColumnX) FROM MyTable)

关于sql - 如何找到不为空的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com