我想确定 SQL 数据表中事件的顺序。我的数据是这样排列的,每个标识符-日期-事件组合出现在单独的行上。每个标识符的输出应该是单行,指示 3 个(并且只有 3 个)事件发生的顺序,以及一个标志,指示三个事件中的哪一个曾经发生过。为了指示顺序,我只关心知道第一个事件的类型和最近事件的类型。(例如,ABC=ADAC,因为我只对 A 是第一件事而 C 是最后一件事这一事实感兴趣。)
假设我的数据是:
CREATE TABLE #ABC
(ID INT NOT NULL,
CODE_DATE DATE NOT NULL,
CODE_GROUP VARCHAR(10) NULL)
INSERT INTO #ABC VALUES (1,'20000-01-01','APPROVED')
INSERT INTO #ABC VALUES (1,'20001-01-01','DENIED')
INSERT INTO #ABC VALUES (1,'20003-01-01','ON HOLD')
INSERT INTO #ABC VALUES (1,'20002-01-01','APPROVED')
INSERT INTO #ABC VALUES (2,'20008-01-01','DENIED')
INSERT INTO #ABC VALUES (2,'20004-01-01','DENIED')
INSERT INTO #ABC VALUES (3,'20006-01-01','ON HOLD')
INSERT INTO #ABC VALUES (3,'20005-01-01','APPROVED')
INSERT INTO #ABC VALUES (3,'20009-01-01','DENIED')
INSERT INTO #ABC VALUES (4,'20001-01-01','ON HOLD')
INSERT INTO #ABC VALUES (4,'20004-01-01','ON HOLD')
INSERT INTO #ABC VALUES (4,'20007-01-01','DENIED')
INSERT INTO #ABC VALUES (5,'20005-01-01','ON HOLD')
INSERT INTO #ABC VALUES (5,'20008-01-01','ON HOLD')
INSERT INTO #ABC VALUES (5,'20009-01-01','APPROVED')
那么所需的输出是:
ID RESULT EVER_APPROVED EVER_DENIED EVER_ON_HOLD
1 'APPROVED THEN ON HOLD' 'Y' 'Y' 'Y'
2 'DENIED' 'N' 'Y' 'N'
3 'APPROVED THEN DENIED' 'Y' 'Y' 'Y'
4 'ON HOLD THEN DENIED' 'N' 'Y' 'Y'
5 'ON HOLD THEN APPROVED' 'Y' 'N' 'Y'