下面是DB 中的给定表格
ID | 组织ID | 应用程序代码年份||
---|---|---|---|
1 | 205 | EBB | 2016 |
25 | EBB | 2016||
3 | 205 | LF2017//tr>||
4 | 205 | LF | 2017|
5 | 205 | LF | 2018 |
6 | 205 | LF | 2018|
7 | 205 | >LF | 2019 |
8 | 205 | >LF | 2019 |
9 | 205 | EBB2020 | |
10 | 205 | EBB2020 | |
11 | 205 | >LF | 2020 |
12 | 205 | >LF | 2020 |
13 | 205 | EBB2021 | [/tr>|
14 | 205 | EBB2021 | |
15 | 205 | LF2021 | [/tr>|
16 | 205 | >LF | 2021 |
17 | 205 | LF2022 | [/tr>|
18 | 205 | LF2022 | [/tr>|
19 | 205 | EBB<2022>[/tr>||
20 | 205 | EBB | 2022[/tr>
要分别计算每年和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