如何编写MS Access查询,将值为“Yes”的列的列名拼接填充至新字段
MS Access拼接符合条件字段名实现方案
通用兼容方案(支持所有Access版本)
直接使用IIF条件判断+字符串拼接+Mid函数处理多余逗号的逻辑,SQL语句如下:
SELECT [Patient Name], [Injury A], [Injury B], Mid( IIF([Injury A] = "Yes", ", Injury A", "") & IIF([Injury B] = "Yes", ", Injury B", ""), 3) AS [All Injuries] FROM [你的表名];
说明:该逻辑会自动为每个值为Yes的损伤列拼接对应表头,最后通过
Mid从第3位开始截取字符串,自动去掉开头多余的逗号和空格,不会出现首尾多余分隔符的问题。如果后续新增损伤类字段,只需在Mid的参数中按格式新增对应的IIF判断行即可。
高版本简化方案(仅支持Access 365/2021及以上版本)
可以用内置的CONCAT_WS函数自动处理分隔符,忽略空值,写法更简洁:
SELECT [Patient Name], [Injury A], [Injury B], CONCAT_WS(", ", IIF([Injury A] = "Yes", "Injury A", NULL), IIF([Injury B] = "Yes", "Injury B", NULL) ) AS [All Injuries] FROM [你的表名];
操作步骤
- 打开Access数据库,点击「创建」选项卡下的「查询设计」
- 关闭弹出的「显示表」弹窗,点击顶部视图区域的「SQL视图」
- 粘贴对应版本的SQL代码,将
[你的表名]替换为你实际使用的表名称 - 点击顶部运行按钮(感叹号图标)即可看到预期输出,需要长期使用可直接保存该查询
内容的提问来源于stack exchange,提问作者Tboi
相关产品推荐
相关产品推荐

