gpt4 book ai didi

sql-server-2005 - 如何使用SQL在表中查找N条连续记录

转载 作者:行者123 更新时间:2023-12-04 08:30:18 24 4
gpt4 key购买 nike

我有以下带有示例数据的表定义。在下表中,客户产品和日期是关键字段

Table One
Customer Product Date SALE
X A 01/01/2010 YES
X A 02/01/2010 YES
X A 03/01/2010 NO
X A 04/01/2010 NO
X A 05/01/2010 YES
X A 06/01/2010 NO
X A 07/01/2010 NO
X A 08/01/2010 NO
X A 09/01/2010 YES
X A 10/01/2010 YES
X A 11/01/2010 NO
X A 12/01/2010 YES

在上表中,我需要找到N个或> N个没有销售的连续记录,销售值为'NO'
例如,如果 N 为 2,则结果集将返回以下内容
     Customer   Product    Date         SALE
X A 03/01/2010 NO
X A 04/01/2010 NO
X A 06/01/2010 NO
X A 07/01/2010 NO
X A 08/01/2010 NO

有人可以帮助我进行 SQL 查询以获得所需的结果。我正在使用 SQL Server 2005。我开始使用 ROW_NUMBER() AND PARTITION 子句但没有运气。
谢谢你的帮助

最佳答案

您需要将您的 table 与自己匹配,就好像那里有 2 张 table 一样。因此,您使用两个别名 o1 和 o2 来引用您的表:

SELECT DISTINCT o1.customer, o1.product, o1.datum, o1.sale
FROM one o1, one o2
WHERE (o1.datum = o2.datum-1 OR o1.datum = o2.datum +1)
AND o1.sale = 'NO'
AND o2.sale = 'NO';
customer | product | datum | sale
----------+---------+------------+------
X | A | 2010-01-03 | NO
X | A | 2010-01-04 | NO
X | A | 2010-01-06 | NO
X | A | 2010-01-07 | NO
X | A | 2010-01-08 | NO

请注意,我在 postgresql 数据库上执行了查询 - 也许语法在 ms-sql-server 上有所不同,也许在别名 'FROM one AS o1' 处,也许您不能以这种方式添加/减去。

关于sql-server-2005 - 如何使用SQL在表中查找N条连续记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725807/

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