【发布时间】:2012-11-20 10:00:45
【问题描述】:
我有一个fact 和budget 表,budget 表没有每个类别的值
Category Budget
A 100
B 50
C在budget没有记录
查询似乎变成了 SQL Server 2012 上的内部联接。在我当前的位置,我在 SQL Server 2005 上使用了相同的语法,它仍然返回所有记录。
目前无法检查 SQL Server 2008。
SELECT distinct Category
FROM FactRide
LEFT OUTER JOIN
Budget ON FactRide.Category = Budget.Category
WHERE
(Budget.BudgetType = 'Ride' OR Budget.BudgetType IS NULL)
我错过了 SQL Server 2012 的变化吗?
问题是结果没有返回应有的类别 C。 当我在预算中添加 C 类和预算值“空”的行时,问题已“解决”。
但我想知道我是否应该要求供应商生成不同的 SQL 或注意 SQL 2012 服务包....
【问题讨论】:
-
请提供说明问题的示例数据。我向你保证 join 的语义没有改变。
-
这不是在抱怨不知道你的
Category是哪个select吗?它可以是Fact.Category或Budget.Category。这不是实际的查询吗? -
您的查询引用了
JOIN中名为Fact的表,但FROM中没有实际的Fact表(或别名)。我也同意蕾妮。为避免混淆,请确保SELECT指定应从哪个表中提取Category列。 -
是的,这不是原始查询,我更正了示例查询。原始查询只是有更多的文化特定名称...我试图简化它。
-
你能调整sqlfiddle.com/#!6/2df66/5来显示问题吗?
标签: sql sql-server left-join sql-server-2012