1

我有一个factbudget表,该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 服务包....

4

1 回答 1

-1

是的,自 SQL Server 2012 起,SQL Server 连接语法确实发生了变化,这让我措手不及。您可以在以下位置找到完整的详细信息:https ://straightpathsql.com/archives/2012/11/sql-server-join-syntax-its/

于 2017-11-22T19:17:12.640 回答