将多个字段与条件组合

Posted

技术标签:

【中文标题】将多个字段与条件组合【英文标题】:Combine multiple fields with condition 【发布时间】:2013-10-08 15:12:49 【问题描述】:

我有多个 MS Access 字段,我需要将其中的大部分与一个条件结合起来。我仍然是复杂 SQL 查询的初学者,因此将以下伪代码转换为现实存在局限性:

SELECT field_1, field_2, field_3
CREATE new_field

// these would be WHERE-queries
if field_1 & field_2 are "missing", "unknown" or empty
    then new_field = field_3 

else if field_2 & field_3 are "missing", "unknown" or empty
    then new_field = field_1

else if field_1 & field_3 are "missing", "unknown" or empty
    then new_field = field_2  

new_field 将基本上包含组合 field_1field_2field_3 ... field_n 的值。假设这些 n 字段中只有一个具有合法值。

这在 MS Access 中是否可以通过一个简单的查询来实现?

【问题讨论】:

【参考方案1】:

如果您要在 Access 会话中运行查询,您可以使用 Nz。这将返回包含非 Null 值的字段的值...

SELECT Nz(field_1, '') & Nz(field_2, '') & Nz(field_3, '') AS combined

如果您需要可以在 Access 会话之外工作的查询,Nz 不可用。请改用IIf 表达式。

SELECT
      IIf(field_1 Is Null, '', field_1)
    & IIf(field_2 Is Null, '', field_2)
    & IIf(field_3 Is Null, '', field_3)

【讨论】:

完美运行!对于其他用户,只需提醒在末尾添加FROM table_name,否则它只会询问字段的值并将它们连接起来。 如何过滤“缺失”和“未知”等自定义值?我尝试在 '', 之后的第二个查询中添加它们,但 Access 将其声明为“参数数量错误”。

以上是关于将多个字段与条件组合的主要内容,如果未能解决你的问题,请参考以下文章

mysql筛选GROUP BY多个字段组合时的用法分享

20索引

将满足其他几个列条件的列组合在一起

索引常识

根据多个条件更改班级组合

数据库索引