-1

我有一个类似的表:

incident_id    action    action_date
-----------    ------    -----------
    1            A        2012-12-01
    2            A        2012-12-01
    2            Z        2012-12-02
    3            A        2012-12-03
    3            Z        2012-12-04
    3            G        2012-12-05

在真实表中还有更多操作,日期是日期时间。

这是我想要的结果:

incident_id    color
-----------    -----
    1          GREEN
    2          RED
    3          BLUE

我不知道如何做到这一点,我一般对 SQL 很薄弱。

哎呀,抱歉没有解释颜色。好的,如果事件具有操作 A,则其为绿色。动作 B 胜过 A,然后颜色变为红色。动作 C 再次胜过其他动作,颜色为蓝色。

4

1 回答 1

1

您可以加入一个(永久或派生的)表,该表将等级映射到操作并找到MAX

WITH Actions(action, priority)
     AS (SELECT 'A', 1  UNION ALL
         SELECT 'Z', 2 UNION ALL
         SELECT 'G', 3)
SELECT Y.incident_id,
       CASE MAX(A.priority)
         WHEN 1 THEN 'GREEN'
         WHEN 2 THEN 'RED'
         WHEN 3 THEN 'BLUE'
       END
FROM   YourTable Y
       JOIN Actions A
         ON A.action = Y.action
GROUP  BY Y.incident_id 
于 2013-01-16T20:07:39.207 回答