You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于布尔值结果拼接对应表格列名的技术需求

需求说明:拼接值为True的列名

需求:当表格中对应列的值为True时,将该列的列名进行拼接,生成新的Flags列。

输入表格

IDFlag1Flag2Flag3
1TrueFalseTrue
2FalseTrueTrue

期望输出表格

IDFlags
1Flag1, Flag3
2Flag2, Flag3

实现方法

方法1:SQL实现

假设表名为flag_table,不同数据库可使用对应语法实现:

MySQL/MariaDB:

SELECT 
    ID,
    CONCAT_WS(', ',
        CASE WHEN Flag1 = TRUE THEN 'Flag1' END,
        CASE WHEN Flag2 = TRUE THEN 'Flag2' END,
        CASE WHEN Flag3 = TRUE THEN 'Flag3' END
    ) AS Flags
FROM flag_table;

PostgreSQL:

SELECT 
    ID,
    STRING_AGG(flag_name, ', ') AS Flags
FROM (
    SELECT 
        ID,
        UNNEST(ARRAY['Flag1', 'Flag2', 'Flag3']) AS flag_name,
        UNNEST(ARRAY[Flag1, Flag2, Flag3]) AS flag_value
    FROM flag_table
) sub
WHERE flag_value = TRUE
GROUP BY ID;

方法2:Python Pandas实现

用Pandas处理表格数据的代码示例:

import pandas as pd

# 构造输入数据
data = {
    'ID': [1, 2],
    'Flag1': [True, False],
    'Flag2': [False, True],
    'Flag3': [True, True]
}
df = pd.DataFrame(data)

# 生成Flags列
df['Flags'] = df.apply(
    lambda row: ', '.join(col for col in df.columns if col.startswith('Flag') and row[col]),
    axis=1
)

# 提取目标列
result_df = df[['ID', 'Flags']]
print(result_df)

运行后输出结果与期望表格一致。

内容的提问来源于stack exchange,提问作者SQLUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:12:28