SQL LAST plus,其中未给出所需结果
我想进行SQL查询,但它不起作用。这是我的桌子的样子SQL LAST plus,其中未给出所需结果,sql,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 | 我想设置一个查
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 |
有没有办法解决这个问题?使用having子句:
通过使用last,我猜测您正在使用MS Access。您应该适当地标记问题。可能需要一个顺序,它们只需分别返回查询返回的结果集的第一个或最后一个记录中指定字段的值。由于除非查询包含order BY子句,否则记录通常不会以特定顺序返回,因此这些函数返回的记录将是任意的,使用GROUP BY时,这些函数是非常无用的,因为您经常希望按字段排序,而不是按类似日期的字段进行分组。@GordonLinoff:Oracle的last@a\u horse\u没有名称。在窗口函数的上下文中,我对它很熟悉,但我不熟悉它。当我在本地版本的Oracle上尝试时,它坚持认为该函数无法识别。
SELECT Client, Product, LAST(Amount)
FROM Table
GROUP BY Client, Product
HAVING LAST(Amount) > 0;
SELECT Client,Product, LAST(Amount)
FROM Table
WHERE product IN (SELECT product
FROM table) and LAST>0
GROUP BY Client, Product