FIRST_VALUE и LAST_VALUE со значениями NULL - PullRequest
0 голосов
/ 28 мая 2019

Я хочу получить 2 самых дорогих книги и по крайней мере 2 дорогих книги используя FIRST_Value и LAST_Value SQL Server

Наличие нулей дает неверное значение минимальной цены, я хочу, чтобы минимальная цена игнорировала пустые значения

Select top 2 FIRST_VALUE(price) Over(Order by price) as MinPrice,
FIRST_VALUE(title) Over (order by price) as MinName,
LAST_VALUE(price) Over (order by price desc) as MaxPrice,
LAST_VALUE(title) over (Order by price desc) as MaxName
from titles; 

Получение этого вывода

MINPrice    MINName                        Maxprice           MaxName
NULL       The Psychology of Computer        $22.95      But is it Friendly?
NULL       The Psychology of Computer        $21.59      Computer Phobic and 

Где ожидаемый результат должен быть

Minprice     MinName                        Maxprice          Maxname           
$2.99        The Gourmet Microwave           $22.95       But is it Friendly?
$2.99        You can Combat stress          $21.59       Computer Phobic and 

Как мне исключить NULL из минимальной цены

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Вы можете попробовать с

;WITH ctemin AS 
(
   SELECT TOP 2 price AS minprice, title AS mintitle FROM titles WHERE price IS NOT NULL ORDER BY price 
),
ctemax AS 
(
   SELECT TOP 2 price AS maxprice, title AS maxtitle FROM titles WHERE price IS NOT NULL ORDER BY price DESC
)

SELECT ctemin.minprice,ctemin.mintitle,ctemax.maxprice,ctemax.maxtitle FROM ctemax
INNER JOIN ctemin ON 1=1
0 голосов
/ 28 мая 2019
SELECT min(value) FROM table WHERE value IS NOT NULL.

Это должно быть примерно так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...