MS Access 在所有值中添加空值
Posted
技术标签:
【中文标题】MS Access 在所有值中添加空值【英文标题】:MS Access adding nulls across all values 【发布时间】:2014-05-02 15:50:09 【问题描述】:我正在尝试在所有输出中添加空值。因此,对于我的“资产”列表,我想要一个“A”、“B”和“C”的条目——如果有关联的数字,我希望它显示,但如果没有关联的数字,我想要有一行为空的数字。 (对于所有资产,我想要 3 行)
我创建了一个包含条目“A”、“B”和“C”的表,并在该表和执行我的计算的查询之间创建了一个连接。已创建空值,但不是每个条目有 3 行,而是所有空值都在顶部的一行中。
我使用了以下 SQL:
SELECT Query.Assets, [A/B/C].[A/B/C], Query.[Number]
FROM [A/B/C] LEFT JOIN Query ON [A/B/C].[A/B/C] = Query.[Type];
有没有办法将空值强制到每个资产中,而不是将它们全部集中在一起? 注意:'Type' 和 'A/B/C' 都包含相同的字符 - A、B 或 C
谢谢!
【问题讨论】:
【参考方案1】:left join
之前需要一个cross join
:
SELECT q.Assets, abc.[A/B/C], q.[Number]
FROM ([A/B/C] abc CROSS JOIN
(SELECT DISTINCT Q.Assets FROM Query q) qa
) LEFT JOIN
Query q
ON abc.[A/B/C] = a.[Type] and q.Assets = qa.Asssets;
Access 在连接中有一些字符串限制。如果上述方法不起作用,您可以使用交叉连接和条件聚合来做一些事情:
SELECT q.Assets, abc.[A/B/C],
MAX(iif(abc.[A/B/C] = q.[Type], q.[Number], NULL))
FROM ([A/B/C] abc CROSS JOIN
Query q
GROUP BY q.Assets, abc.[A/B/C], q.[Number];
【讨论】:
【参考方案2】:这个 Stack Overflow 讨论告诉我 CROSS JOIN 在 Access 中不可用:
Multiple (left, cross?) JOINs in MS Access
在 Access 2010 中是否有其他有效的解决方案来创建空值?还有其他解决方法吗?
【讨论】:
【参考方案3】:这应该可以满足您的要求:
SELECT Query.Assets, [A/B/C].[A/B/C], SWITCH(Query.Type = [A/B/C].[A/B/C], Query.[Number ], Query.Type = [A/B/C].[A/B/C], NULL) AS QueryNumber FROM Query, [A/B/C]
【讨论】:
以上是关于MS Access 在所有值中添加空值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS Access 中创建 Pivot 以避免一种类型的记录出现空值?