如何在Access SQL中求一个组(即使不在该组中)的所有值之和?
我有一张这样的桌子:如何在Access SQL中求一个组(即使不在该组中)的所有值之和?,sql,ms-access,Sql,Ms Access,我有一张这样的桌子: MUN | TYPE | LENGTH -----|-------|-------- 001 | A | 5 001 | A | 2 002 | A | 3 002 | C | 8 003 | B | 6 MUN | TYPE | LENGTH -----|-------|-------- 001 | A | 7 001 | B | 0 001 | C | 0 002 | A
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 5
001 | A | 2
002 | A | 3
002 | C | 8
003 | B | 6
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 7
001 | B | 0
001 | C | 0
002 | A | 3
002 | B | 0
002 | C | 8
003 | A | 0
003 | B | 6
003 | C | 0
SELECT DISTINCT
A.MUN,
A.TYPE
SUM(A.LENGTH)
FROM
MY_TABLE AS A
LEFT JOIN (SELECT DISTINCT TYPE FROM MY_TABLE) AS B ON A.TYPE = B,TYPE
GROUP BY
A.MUN, A.TYPE
我想为每个门展示所有类型及其长度,如下所示:
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 5
001 | A | 2
002 | A | 3
002 | C | 8
003 | B | 6
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 7
001 | B | 0
001 | C | 0
002 | A | 3
002 | B | 0
002 | C | 8
003 | A | 0
003 | B | 6
003 | C | 0
SELECT DISTINCT
A.MUN,
A.TYPE
SUM(A.LENGTH)
FROM
MY_TABLE AS A
LEFT JOIN (SELECT DISTINCT TYPE FROM MY_TABLE) AS B ON A.TYPE = B,TYPE
GROUP BY
A.MUN, A.TYPE
请注意,例如,MUN 001没有类型B和C,但它们的长度应为0
我试过这样的方法:
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 5
001 | A | 2
002 | A | 3
002 | C | 8
003 | B | 6
MUN | TYPE | LENGTH
-----|-------|--------
001 | A | 7
001 | B | 0
001 | C | 0
002 | A | 3
002 | B | 0
002 | C | 8
003 | A | 0
003 | B | 6
003 | C | 0
SELECT DISTINCT
A.MUN,
A.TYPE
SUM(A.LENGTH)
FROM
MY_TABLE AS A
LEFT JOIN (SELECT DISTINCT TYPE FROM MY_TABLE) AS B ON A.TYPE = B,TYPE
GROUP BY
A.MUN, A.TYPE
但应该更像一个完整的连接?我试着把左连接和右连接结合起来,但运气不好
从一开始,我就觉得这个查询有点胡说八道,我想不出任何其他方法来实现这一点。最后,我设法提出了一个丑陋的查询来完成这项工作。这是对每种类型的查询的并集,在我的例子中,只有少数类型,这是可以的,但是对于成百上千的类型,这不是一个有效的答案,所以这不会被接受 这里是“杰作”:
如果需要求和值,为什么要使用
COUNT(A.LENGTH)
?为什么Mun 001的第二个实例的类型A的长度为0?对不起,这里有错误。我得赶紧把问题发出去。