SQL LAST加上WHERE不提供所需的结果

时间:2014-11-14 12:12:23

标签: sql

我想进行SQL查询,但它不起作用。这是我的表格的样子

Client|Product|Amount|
  A   | P1    |  5   | 
  A   | P1    |  7   | 
  A   | P1    |  3   | 
  A   | P2    |  8   | 
  A   | P2    |  0   | 
  A   | P2    |  5   | 
  A   | P3    |  9   | 
  A   | P3    |  0   | 

我想设置一个查询,为我提供每个客户端的最后一个条目以及每个大于0的产品。输出应如下所示:

Client|Product|Amount|
  A   | P1    |  3   |  
  A   | P2    |  5   | 

我尝试使用此代码

SELECT Client,Product, LAST(Amount) 
FROM Table 
WHERE Amount>0 
GROUP BY Client,Product

但我得到了这个输出:

Client|Product|Amount|
  A   | P1    |  3   |  
  A   | P2    |  5   | 
  A   | P3    |  9   | 

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用having子句:

SELECT Client, Product, LAST(Amount)
FROM Table
GROUP BY Client, Product
HAVING LAST(Amount) > 0;

答案 1 :(得分:0)

SELECT Client,Product, LAST(Amount) 
FROM Table
WHERE product IN (SELECT product
                FROM table)   and LAST>0
GROUP BY Client, Product