开发者

How do I find the result that is not null?

I have a query which returns 2+ rows. In those results is a column which we can call columnX for now. Lets look at those example results:

columnX

100

86

85

70

null

null

I get 6 rows for example, some of them are null, some of them are not null. Now I want to go through those results and stop as soon as I find a row which is <> null. How can I do that?


Thing is, its always sorted that way. So if there are nulls, they are at the bottom. This can be a result:

columnX

100

86

85

70

null

null

and this as well:

columnX

100

86

85

70

So there can be nulls or not, in any case, I want to find the first not null rows, 70 in the above examples. I think the CTE is a nice start...but something is still missing. This is how I get those rows:

select columnx from mytable where someid = 12345

So the numbers in columnx all belong together (because someid). I really have to get the first not null row from that result. I cant just lo开发者_开发知识库ok for the first row that is not null from the whole columnx, I have to use a condition (where someid = 12345) before. The 70 is just an example, it can be 90 as well, so I cant get the minvalue from the results. The nulls are always at the bottom, the rest can be unsorted. This can be a result as well:

columnX

100

23

80

78

null

null

In that case I want the 78.


I would use a CTE (Common Table Expression) to pull out an index alongside the column (using the ROW_NUMBER function).

You can then use a nested select to find the minimum null index, then select everything below that.

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)

Edit following your further information, if you just want all rows where ColumnX is the minimum value, you can jsut do the following:

SELECT * 
FROM MyTable
WHERE ColumnX = (SELECT MIN(ColumnX) FROM MyTable)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜