SQL - 添加列

SQL - Adding columns

我是 SQL 的新手,想知道是否有人可以帮助我解决这个小问题。我试图让我的输出如下所示:

但我目前得到这个输出:

这是我的 SQL 代码:

SELECT trk_id, 
       cur_state
FROM trk_id_def
Where (trk_id like 'TPA12%' )
ORDER BY trk_id

如何让列反映 MF、CH_A、CH_B 和 CH_C 及其各自的值?

您在找这样的东西吗?

select substr(trk_id, 1, 5),
       max(case when trk_id like '%A' then cur_state end) as state_a,
       max(case when trk_id like '%B' then cur_state end) as state_b,
       max(case when trk_id like '%C' then cur_state end) as state_c
from t
group by substr(trk_id, 1, 5)

@Med2020 您的查询应该可以正常工作。请查看下面的示例,让我知道它失败的数据。我已经更改了 M 列的条件。

架构和插入语句:

 create table trk_id_def( TRK_ID varchar(50),CUR_STATE varchar(50));

 insert into trk_id_def values('TPA12','PROD');
 insert into trk_id_def values('TPA12-A','PROD');
 insert into trk_id_def values('TPA12-B','NM');
 insert into trk_id_def values('TPA12-C','NM');

查询:

   select substr(trk_id, 1, 5) as Misti, 
     max(case when trk_id =substr(trk_id, 1, 5) then cur_state end) as M,  
     max(case when trk_id like '%-A' then cur_state end) as CH_A,        
     max(case when trk_id like '%-B' then cur_state end) as CH_B,        
     max(case when trk_id like '%-C' then cur_state end) as CH_C 
     from trk_id_def Where (trk_id like 'TPA12%' )  
     group by substr(trk_id, 1, 5);

输出:

MISTI M CH_A CH_B CH_C
TPA12 PROD PROD NM NM

dbhere