我有一张如下表
ID COL2 COL3 date
1 CLINICAL red 30-Aug
1 HOUSE CALLS green 27-Oct
1 PREDICTIVE blue 29-Oct
1 CLINICAL green 30-oct
2 PREDICTIVE green 20-Jan
2 CLINICAL blue 21-Jan
2 HOUSE CALLS red 20-Feb
2 PREDICTIVE green 28-Feb
3 HOUSE CALLS red 30-Apr
3 PREDICTIVE green 12-May
4 CLINICAL blue 14-May
我必须创建一个附加列 COL4,它将根据每个 ID 在 COL2 中的值从 COL3 中选择值。COL2 只能有 3 个值
临床(第 1 优先)
预测(第 2 优先)
出诊(第 3 优先)
输出应如下所示:
ID COL2 COL3 date COl4
1 CLINICAL red 30-Aug red
1 HOUSE CALLS green 27-Oct red
1 PREDICTIVE blue 29-Oct red
1 CLINICAL green 30-oct green
2 PREDICTIVE green 20-Jan green
2 CLINICAL blue 21-Jan blue
2 HOUSE CALLS red 20-Feb blue
2 PREDICTIVE green 28-Feb blue
3 HOUSE CALLS red 30-Apr red
3 PREDICTIVE green 12-May green
4 CLINICAL blue 14-May blue
例如,让我们以 ID '1' 为例。在第一个表中,col2 值是 8 月 30 日的临床值,它也具有最高优先级,因此对于 ID 1,col4 的值将保持不变,直到 30 日 29oct bcz 临床再次出现,因此值应更改为绿色。让我们将 ID '2' 用于 col2 的第一个值是可预测的,因此 col4 的值将是其对应的 col3 值。但在 21 日 col2 值更改为最高优先级的临床后 col4 值将更改为蓝色。基于 col2 中存在的值的优先级的其他 ID 与以下相同。
这是我目前正在使用的查询,但是当临床使用另一个 col3 值再次出现时,对于 id 1,它仍然选择旧的,即红色,但它应该为第 4 行选择绿色
COALESCE(MAX(CASE WHEN [col2] = 'CLINICAL' THEN col3 END) OVER (PARTITION BY ID ORDER BY date ),
MAX(CASE WHEN [col2] = 'PREDICTIVE MODEL' THEN col3 END) OVER (PARTITION BY ID ORDER BY date),
MAX(CASE WHEN [col2] = 'HOUSECALLS' THEN col3 END) OVER (PARTITION BY ID ORDER BY date )
) as BANNER_RISK_LEVEL