MS Access在所有值中添加空值

时间:2014-05-02 15:50:10

标签: sql ms-access null outer-join

我试图在所有输出中添加空值。所以对于我的列表'Assets',我想要一个'A','B'和'C'的条目 - 如果有一个数字关联我希望它显示但是,如果没有关联的数字,我想那里有一个数字为null的行。 (对于我想要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];

有没有办法强制空值进入每个资产而不是将它们全部集中在一起? 注意:'类型'和'A / B / C'都包含相同的字符 - A,B或C

谢谢!

3 个答案:

答案 0 :(得分:0)

cross join之前需要left 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];

答案 1 :(得分:0)

此Stack Overflow讨论告诉我CROSS JOIN在Access中不可用:

Multiple (left, cross?) JOINs in MS Access

Access 2010中是否有其他解决方案可用于创建空值?还有其他工作吗?

答案 2 :(得分:0)

这应该适合您的要求:

SELECT Query.Assets,[A / B / C]。[A / B / C],SWITCH(Query.Type = [A / B / C]。[A / B / C],查询。[编号] ],Query.Type = [A / B / C]。[A / B / C],NULL)AS QueryNumber FROM Query,[A / B / C]

相关问题