Access 2016:在反向交叉表查询中对代码进行重复数据删除

时间:2016-05-19 20:37:12

标签: sql sql-server ms-access ms-access-2016

我正在尝试编写一个将转换平面表的Access 2016查询

ID |Date |Site Name | Alexandrium | Ceratium | etc etc

...进入多表:

ID |Date |Site Name | Species | Num

我已经能够做到这一点,但是查询非常长:每个物种我有20个值/列,我必须为每个物种名称写出一个UNION查询:

    SELECT ID, Date, [Site Name], "Alexandrium" as Species, Alexandrium as Num
        FROM DatabaseName
    UNION ALL
    SELECT ID, Date, [Site Name], "Ceratium" as Species, Ceratium as Num
        FROM DatabaseName
    UNION ALL

等等,等等。

有没有更好的方法来执行此操作,其中一个可以为查询提供列名列表,它将迭代它们,执行查询,以及UNION它们全部?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Access并没有像SQL Server那样轻松地进行忽略。

如果您有姓名列表并且不想写出SQL,您可以将其提供给查询,如下所示:

SELECT "SELECT ID, Date, [Site Name], '" & [SpeciesName]
& "' as Species, " & [SpeciesName] & " as Num FROM DatabaseName UNION " AS Expr1
FROM Species

然后复制结果,删除最后一个UNION并将SQL粘贴到查询中