如何根据应用程序代码和年份获取标志



下面是DB 中的给定表格

应用程序代码年份2016LF2017//tr>20172018>>EBBEBB>>EBB[/tr>EBBLF[/tr>>LF[/tr>LF[/tr>EBB<2022>[/tr>2022[/tr>
ID 组织ID
1 205 EBB 2016
25 EBB
3 205
4 205 LF
5 205 LF 2018
6 205 LF
7 205LF2019
8 205LF2019
9 2052020
10 2052020
11 205LF2020
12 205LF2020
13 2052021
14 2052021
15 2052021
16 205LF2021
17 2052022
18 2052022
19 205
20 205 EBB

要分别计算每年和org_id的标志,可以使用以下查询:

SELECT *,
MAX(CASE WHEN app_code='EBB' THEN 2 ELSE 0 END) OVER (PARTITION BY org_id, year) +
MAX(CASE WHEN app_code='LF' THEN 1 ELSE 0 END) OVER (PARTITION BY org_id, year) Flag
FROM T

如果版本<8.0您可以使用更复杂的查询:

SELECT T.*, F.Flag
FROM T
JOIN (
SELECT org_id, year, CASE WHEN IsEBB=1 AND IsLF=1 THEN 3 WHEN IsEBB=1 THEN 2 ELSE 1 END Flag
FROM (
SELECT org_id, year, MAX(CASE app_code WHEN 'EBB' then 1 END) IsEBB, MAX(CASE app_code WHEN 'LF' then 1 END) IsLF
FROM T
GROUP BY org_id, year
) Group1
) F ON T.org_id=F.org_id AND T.year=F.year

最新更新