【发布时间】:2011-01-07 21:40:29
【问题描述】:
我有以下格式的数据:
Date, FirstName, LastName, Unit
Jan1 , Bob , Guy , Home
Jan2 , Bob , Guy , Home
Jan3 , Bob , Guy , Home
Jan5 , Bob , Guy , Home
Jan6 , Bob , Guy , Home
Jan7 , Bob , Guy , Home
Jan8 , Bob , Guy , Offsite
Jan3 , Jane , Doe , Home
Jan4 , Jane , Doe , Home
Jan5 , Jane , Doe , Home
Jan9 , Bob , Guy , Home
Jan10, Bob , Guy , Home
Jan11, Bob , Guy , Home
Jan12, Jane , Doe , Home
Jan13, Jane , Doe , Home
Jan14, Jane , Doe , Home
我想要它的格式
DateStart, DateEnd, FirstName, LastName, Unit
Jan1 , Jan3 , Bob , Guy , Home
Jan5 , Jan7 , Bob , Guy , Home
Jan8 , Jan8 , Bob , Guy , Offsite
Jan3 , Jan5 , Jane , Doe , Home
Jan9 , Jan11 , Bob , Guy , Home
Jan12 , Jan14 , Jane , Doe , Home
编辑:更新数据。
如何轻松转换数据?
这是一次转换。
感谢 cmets/answers!
【问题讨论】:
-
不完全清楚你想做什么;例如为什么 Jane Doe 的“DateEnd”= Jan3,而 Bob Guy 的为空?给定的名字/姓氏是否可以有两个以上的条目?如果是:您是否希望 DateStart = MIN(Date) 和 DateEnd = MAX(Date) 用于该名称??
-
同意 marc_s... 我希望 Jane Doe 的 DateEnd 为空,就像您解释的 Bob 一样?否则你的意思是最后一行只有没有 DateEnd 吗?
-
@marc_s & @Matthew PK Bob 的 DateEnd 为空,因为他是最后一个进入该单元的人。给定的名字/姓氏可以有许多条目。 Jan4 之后可能有更多的“Home”条目,这将使第二个表上的 Jan4 条目的 DateEnd 为 Jan4(如果它是另一个人),或者如果 Bob 有多个条目,然后是另一个人,则成为另一个日期在他之后的家庭单元上有一个条目。每个单元最近的 DateStart 将有一个 null DateEnd
-
如果两个人在Unit的最后日期有相同的日期怎么办?
-
我放弃了我之前关于 null DateEnds 的声明。 :( 他们让事情变得更复杂了。
标签: sql sql-server tsql gaps-and-islands