我有一张表按日期记录状态 T1
ID Date Status
101 1 N
101 2 N
101 3 P
101 4 P
101 5 R
101 6 R
101 7 R
102 1 N
102 2 N
102 3 P
102 4 N
102 5 N
102 6 N
102 7 P
103 5 N
103 6 N
103 7 P
但是我一直试图得到一个结果,我可以计算每个状态的时间段,只显示状态变化的日期。
ID Date Status Period
101 1 N 2
101 3 P 2
101 5 R 2
102 1 N 2
102 3 P 1
102 4 N 3
102 7 P 1
103 5 N 2
103 7 P 1
请帮忙...... 提前谢谢!
答案 0 :(得分:1)
我认为这可以帮到你找到你想要的东西:
SELECT Table.*, tA.Period
FROM Table INNER JOIN (SELECT ID, Status, MIN(Date) AS DateOfChange, COUNT(*) as Period
FROM Table
GROUP BY ID, Status) AS tA ON Table.ID = tA.ID
AND Table.Date = tA.DateOfChange