-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 に答える