gpt4 book ai didi

mysql - 用于提取最新部分以及比该日期早 30 天的任何内容的 SQL 查询。

转载 作者:行者123 更新时间:2023-11-29 10:11:31 27 4
gpt4 key购买 nike

我对 SQL 非常陌生,我需要编写一个查询来为特定部分选择数据。但是,它应该仅选择最新的部分(按日期给出)以及仅在此之前 30 天的任何内容。请考虑下表:

PartID | Part_NAME | DATE
-----------------------------
1 AAA 6/16/2015
2 BBB 6/15/2015
3 AAA 6/11/2015
4 AAA 1/1/2008

我需要一个查询来提供:

PartID | Part_NAME | DATE
-----------------------------
1 AAA 6/16/2015
3 AAA 6/11/2015

我已经尝试过:

select * from ( select * from sales_table where Part_NAME = 'AAA') where DATE BETWEEN (max(DATE) and  (max(DATE)-30))

我读过一些文章,说我不能同时使用 WHEREmax() 等函数,并建议我使用 group by但它对我来说也不起作用。谢谢。

最佳答案

如果您想要当天过去 30 天的数据,您可以这样做:

SELECT * 
FROM sales_table
WHERE
[DATE] >= DATEADD(DAY, -30,GETDATE())
AND [DATE] <= GETDATE()
AND Part_NAME = 'AAA'

如果您想要每个 Part_NAME 最后销售日期起过去 30 天内的数据(这将采用每个 Part_NAME 的最大记录销售日期并获取每一项的最近 30 天记录。)

SELECT * 
FROM (
SELECT *,
MAX([DATE]) OVER(PARTITION BY Part_NAME ORDER BY PartID) AS RecentDate
FROM sales_table
) D
WHERE
[DATE] >= DATEADD(DAY, -30, RecentDate)
AND [DATE] <= RecentDate
AND Part_NAME = 'AAA'

关于mysql - 用于提取最新部分以及比该日期早 30 天的任何内容的 SQL 查询。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892483/

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