繁体   English   中英

每隔一行插入一列

[英]Insert every other row to a Column

如果我们按日期升序组织结果,我有这个表,其中一行是Transaction Date ,第一行是checkIn ,第二行是Checkout出。

我需要将第二行值传递给另一个名为Checkout的列。 此表至少有 1000 条记录

您可以使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by studentid order by transactiondate) as seqnum
      from t
     ) t
where seqnum = 2;

这假定只有studentid用于标识“第一”和“第二”行。 如果需要更多列,请将它们添加到partition by子句中。

如果您需要的结帐日期是按原因分组的第二个(最大)日期,并且您想挑出此日期,请尝试:

select 
  studentID,
  reason,
  max(transactionDate) as checkoutDate
from student
group by
  reason

尝试使用下面的查询

With CteCheckOut as(
Select
ROW_NUMBER() over (Partition by studentID Order by studentID,transactionDate) as Rownumber,
*
From student
)
Select studentID, transactionDate as CheckOutDate
From CteCheckOut
Where Rownumber%2 = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM