如何使用MySql根据表中的首选项顺序选择行值



我有一个列为data_type 的data_attributes表

SELECT * FROM DATA_ATTRIBUTES;
DATA_TYPE
----------
NAME
MOBILE
ETHINICITY
CC_INFO
BANK_INFO
ADDRESS

Bank_info、CC_info分类为Risk1、

Mobile,Ethnicity分类为Risk2,

名称、地址分类为Risk3

我应该得到风险分类作为输出,

例如:如果任何一行包含Risk1类型,则输出应为Risk1,否则,如果任何一行包含Risk2类型,则输出应该是Risk2,否则,如果任何一行包含Risk3类型,则输出应为Risk3

我在下面写了这个的查询

SELECT COALESCE(COL1,COL2,COL3) FROM
(SELECT 
CASE WHEN DATATYPE IN ('BANK_INFO','CC_INFO') THEN 'RISK1' ELSE NULL END AS COL1, 
CASE WHEN DATATYPE IN ('MOBILE','ETHINICITY') THEN 'RISK2' ELSE NULL END AS COL2,
CASE WHEN DATATYPE IN ('NAME','ADDRESS') THEN 'RISK3' ELSE NULL END AS COL3
FROM DEMO.TPA_CLASS1) A; 

所需输出为:Risk1(仅1个值(

请给出一些实现这一目标的想法。

您可以使用条件聚合:

SELECT 
CASE 
WHEN MAX(DATATYPE IN ('BANK_INFO','CC_INFO')) = 1 THEN 'RISK1'
WHEN MAX(DATATYPE IN ('MOBILE','ETHINICITY')) = 1 THEN 'RISK2'
WHEN MAX(DATATYPE IN ('NAME','ADDRESS')) = 1 THEN 'RISK3'
END AS RISK
FROM DEMO.TPA_CLASS

最新更新