gpt4 book ai didi

sql - 在日期差异上获得相同 FK 的前一项记录

转载 作者:行者123 更新时间:2023-12-04 15:49:06 27 4
gpt4 key购买 nike

我需要在一小时内插入同一客户的前 1 条记录。如果一小时后插入记录,则不需要该记录。
请参见下表。这只是 1000 条记录的样本。我正在使用 SQL Server 2005。

alt text http://img651.imageshack.us/img651/3990/customershavingmultiple.png

最佳答案

考虑下表:

CREATE TABLE [dbo].[Orders](
[OrderID] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [int] NULL,
[OrderDate] [datetime] NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[OrderID] ASC
)
)

以下语句显示了客户在时间范围内下的最后一个订单,然后是其他订单。
;With OrderList As
(
Select Top 100 Percent * From dbo.Orders
Where OrderDate >= DateAdd(hh, -1, GetDate())
Order By OrderDate Desc
)
Select 'First' As DataType,
CustomerID, Min(OrderID) As OrderID, Min(OrderDate) As OrderDate
From OrderList
Group By CustomerID
Union All
Select 'Second' As DataType,
CustomerID, OrderID, OrderDate
From OrderList
Where OrderID Not In
(
Select Min(OrderID) As OrderID
From OrderList
Group By CustomerID
)
--Union All
--Select 'Raw' As DataType,
-- CustomerID, OrderID, OrderDate
--From Orders

最后一部分被注释掉了,因为我用它来测试我是否真的得到了正确的行。

简而言之,With 语句将表中的订单限制为基于当前系统日期的最后一小时内下达的订单,并按订单日期订购。
第一个语句 (Select 'First') 然后只提取客户的第一个订单。
第二个语句(Select 'Second')然后提取不在第一个语句中的所有其他订单。

Muhammed,这应该按您的预期工作,但是我没有 1000 行来测试它。性能应该没问题,因为 With 部分将创建一个临时表来使用。

关于sql - 在日期差异上获得相同 FK 的前一项记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2227808/

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