gpt4 book ai didi

sql - 子查询 : how to retrieve the last non-zero value from a column?

转载 作者:行者123 更新时间:2023-12-04 06:22:41 35 4
gpt4 key购买 nike

考虑一个包含 3 列的表 customerBalance:名称、日期和余额。假设有一组记录,如:

cus_name    cus_date    cus_balance
John 06/14/2011 1000
John 06/15/2011 500
John 06/16/2011 0
Mary 06/14/2011 3000
Mary 06/15/2011 2800
Mary 06/16/2011 0

如何创建一个 SQL 查询,返回日期为 6/16/2011 而不是 0,基于日期的最后一个非零值(示例中,John 为 500 美元,Mary 为 2800 美元)?

我正在尝试使用一个子查询来执行此操作,该子查询使用 Max 函数检索具有非零值的最后一个日期,但我没有成功。这个例子很“荒谬”,但我真的需要在我的数据集中做这样的操作。谢谢!

最佳答案

注意:如果您可以指定数据库和版本,则可以改进此查询。

尝试这个:

SELECT *
FROM customers
WHERE (cus_name, cus_date)
IN
(
SELECT cus_name, MAX(cus_date)
FROM customers
WHERE cus_balance <> 0
GROUP BY cus_name
)

更新:替代版本:
SELECT a.*
FROM customers a,
(
SELECT cus_name, MAX(cus_date)
FROM customers
WHERE cus_balance <> 0
GROUP BY cus_name
) b
WHERE a.cus_name = b.cus_name
AND a.cus_date = b.cus_date

关于sql - 子查询 : how to retrieve the last non-zero value from a column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377108/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com