MS Access - 将非空列值组合到(列名:列值)文本字符串/字段中

时间:2015-09-15 14:47:54

标签: sql ms-access

我有一个Excel文件,它基本上是数据库服务器的查询结果。

我将这个Excel文件的一张作为外部表从MS Access数据库中链接。

这个外部“Excel表”有一组代表可选参数的列。

我想创建一个“all_parameters”查询结果字段,该字段表示所有非空参数的以分号分隔的列表,作为“参数名称:参数值”元组。在这种情况下,“参数名称”也是要在其中找到参数值的列的名称。

想象一下下表:

id param_foo param_bar param_baz
 1 a
 2           b         c
 3

我希望创建一个生成以下字段的MS Access查询:

id parameter_list
 1 param_foo: a
 2 param_bar: b; param_baz: c
 3 (null)

什么行不通,是这样的:

SELECT
  id,
  Iif([param_foo]="Null";"";"; param_foo: "&[param_foo])
& Iif([param_bar]="Null";"";"; param_bar: "&[param_bar])
& Iif([param_baz]="Null";"";"; param_baz: "&[param_baz]) AS all_parameters
FROM
  my_table
;

任何帮助都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

傻傻的我。

MS Access需要逗号作为参数分隔符,而不是分号。

因此以下查询有效:

SELECT
  id,
  Iif([param_foo]="Null", "", "; param_foo: "&[param_foo])
& Iif([param_bar]="Null", "", "; param_bar: "&[param_bar])
& Iif([param_baz]="Null", "", "; param_baz: "&[param_baz]) AS all_parameters
FROM
  my_table
;

问题解决了。