在使用 row_number() 的同时加入 temp table
Joining temp table whilst using row_number()
我正在尝试在 Microsoft SQL 服务器中获取以下 table。基本上我想要做的是为每个销售 ID 获取销售日期(日期和时间)和下一个销售日期(日期和时间),以及第一个销售日期的销售量。下面的table应该会解释后面的。
我已经完成了以下编码,但还没有达到上面的 table:
DECLARE @date1 AS datetime;
DECLARE @date2 AS datetime;
SET @date1 = DATEADD(HOUR, -72, GETDATE());
SET @date2 = DATEADD(HOUR, -1, GETDATE());
SELECT SaleID AS SaleID,
,[Sale Date & Time] AS SalesDate
,RN
INTO #sales
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY SaleID ORDER BY [Sale Date & Time] ASC) AS RN,
SaleID,
SalesDate
FROM Sales
WHERE [Sale Date & Time] BETWEEN @date1 AND @date2) T;
查询第一部分的数据:
我设法做了上面的部分,以防将来有人会发现它有用。
使用了以下编码
with cte as
(
select rownum = ROW_NUMBER() over (partition by SalesID order by [Sales Date & Time] asc)
,SalesID,[Sale Date & Time],[Amount]
from Sales
where [Sales Date & Time] between GETDATE()-7 and GETDATE()
)
select
a.SalesID
,a.[Sale Date & Time]
,b.Sale Date & Time]
,a.[Amount]
from cte a
inner join cte b on b.rownum = a.rownum+1 and a.SalesID=b.SalesID
我正在尝试在 Microsoft SQL 服务器中获取以下 table。基本上我想要做的是为每个销售 ID 获取销售日期(日期和时间)和下一个销售日期(日期和时间),以及第一个销售日期的销售量。下面的table应该会解释后面的。
我已经完成了以下编码,但还没有达到上面的 table:
DECLARE @date1 AS datetime;
DECLARE @date2 AS datetime;
SET @date1 = DATEADD(HOUR, -72, GETDATE());
SET @date2 = DATEADD(HOUR, -1, GETDATE());
SELECT SaleID AS SaleID,
,[Sale Date & Time] AS SalesDate
,RN
INTO #sales
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY SaleID ORDER BY [Sale Date & Time] ASC) AS RN,
SaleID,
SalesDate
FROM Sales
WHERE [Sale Date & Time] BETWEEN @date1 AND @date2) T;
查询第一部分的数据:
我设法做了上面的部分,以防将来有人会发现它有用。
使用了以下编码
with cte as
(
select rownum = ROW_NUMBER() over (partition by SalesID order by [Sales Date & Time] asc)
,SalesID,[Sale Date & Time],[Amount]
from Sales
where [Sales Date & Time] between GETDATE()-7 and GETDATE()
)
select
a.SalesID
,a.[Sale Date & Time]
,b.Sale Date & Time]
,a.[Amount]
from cte a
inner join cte b on b.rownum = a.rownum+1 and a.SalesID=b.SalesID