Access 2016:在反向交叉表查询中删除重复代码
Posted
技术标签:
【中文标题】Access 2016:在反向交叉表查询中删除重复代码【英文标题】:Access 2016: Deduplicating code in a reverse crosstab query 【发布时间】:2016-05-19 20:37:12 【问题描述】:我正在尝试编写将转换平面表的 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
等等等等。
有没有更好的方法来做到这一点,可以为查询提供一个列名列表,然后它会遍历它们、执行查询并将它们全部联合起来?
提前致谢!
【问题讨论】:
您可能需要提供源数据的样本,这样我们可能会想到如何从这里到达那里。 【参考方案1】: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 粘贴到查询中
【讨论】:
以上是关于Access 2016:在反向交叉表查询中删除重复代码的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access 交叉表查询中显示的多个客户 ID 的计数
从 MS Access 中将交叉表查询结果导出到 Excel