答案 0 :(得分:1)
这是一个典型的隔岛问题。您可以为共享相同的name
的记录组中以及共享相同的name
和 type
的组中的记录分配行号。行号之间的差异为您提供每条记录所属的组。
考虑:
SELECT
name,
MIN(date) FromDate,
MAX(date) ToDate,
type
FROM (
SELECT
t.*,
ROW_NUMBER() OVER(PARTITION BY name ORDER BY date) rn1,
ROW_NUMBER() OVER(PARTITION BY name, type ORDER BY date) rn2
FROM mytable t
) x
GROUP BY name, rn1 - rn2, type
ORDER BY name, FromDate
name | FromDate | ToDate | type :--- | -------: | -------: | :--- Jack | 19700715 | 19890831 | T Jack | 19910920 | 19920526 | N Jack | 19930409 | 20160411 | T