选择min返回空行

时间:2010-11-16 21:46:56

标签: sql sql-server tsql

查询

select min Price, min year from tblProduct

返回空(“”)结果。我只想要数字结果。我该怎么做?

示例:

tblProduct
Price   Year

1000    2008
2000    2009
500  2001
        2005
200  2000

结果是价格“”,2000年。我希望结果是价格200,2000年

4 个答案:

答案 0 :(得分:3)

这将给出每年的最低价值

Select min(p.price) , year
  from 
    tblProduct p 
  WHERE p.price <> ''
  Group by 
      p.year

这将为您提供最低价格的年份和价格。

如果超过一年的最低价格

,这可能会导致多行
Select p.year, p.price from 
tblProduct p inner join 
    (Select min (Price) price
    from tblProduct where price is not null) minP
on p.price = minp.Price

答案 1 :(得分:3)

首先,你的RDBMS是什么?对于我尝试过的(MySQL和PostgreSQL),MIN忽略NULL。

因此,我假设您的列的类型为varchar或text。这对价格没有意义,所以我建议您将其更改为数字类型。

如果你不想,那我就用这样的东西:

SELECT MIN(price), MIN(year)
FROM tblProduct
WHERE price <> ''

将返回(200,2000)。但实际上,它没有意义。您想使用数字类型,并且您希望使用NULL而不是使用空字符串。

答案 2 :(得分:1)

试试这个

SELECT     MIN(Price) AS Price, MIN(Year) AS Year
FROM         tblProduct
HAVING      (MIN(Price) IS NOT NULL) OR
                      (MIN(Price) <> '')

答案 3 :(得分:0)

如果数据集中存在NULL,则MIN,MAX,SUM,AVG和某些其他聚合将返回NULL。你想使用:

SELECT ISNULL(MIN(Price),0) as MinPrice, ISNULL(MIN(Year),0) as MinYear FROM tblProduct