在我的查询中,我选择了一个不存在的列,因为此列来自连接中的子查询。 (子查询可以给我0行)
因此,在这种情况下,我想选择0而不是“temp.Quantity”列。
代码:
SELECT
bx.BX_BoxNum,
temp.Quantity -- <- this column
FROM BOX bx
INNER JOIN (SELECT BX_Id, SUM(BX_Quantity) AS Quantity FROM BOX
WHERE BX_Top_S = 'True' GROUP BY BX_Id) temp
ON bx.BX_Id = temp.BX_Id
WHERE bx.BX_BoxNum = 10
有时候一个盒子号是空的!我尝试使用“BOX n°10 - 0”而不是“
”你能帮我吗?
答案 0 :(得分:0)
SELECT bx.BX_BoxNum, ISNULL(temp.Quantity, 0)
FROM BOX bx
left outer JOIN (SELECT BX_Id, SUM(BX_Quantity) AS Quantity FROM BOX
WHERE BX_Top_S = 'True' GROUP BY BX_Id) temp ON bx.BX_Id = temp.BX_Id
WHERE bx.BX_BoxNum = 10
外连接允许在连接的一侧不返回任何内容时进行选择。内连接必须在连接的两侧都有行(如您所见!)。 Google了解LEFT,RIGHT和FULL Outer连接之间的差异。
答案 1 :(得分:0)
SELECT bx.BX_BoxNum, SUM(COALESCE(temp.Quantity, 0)) AS Quantity
FROM BOX bx
LEFT JOIN BOX temp ON bx.BX_Id = temp.BX_Id AND temp.BX_Top_S = 'True'
WHERE bx.BX_BoxNum = 10
GROUP BY bx.BX_BoxNum