Sql 不产生结果的加入
我有每日数字视图和每月数字视图 每日视图:Sql 不产生结果的加入,sql,sql-server,join,Sql,Sql Server,Join,我有每日数字视图和每月数字视图 每日视图: SELECT * (includes sum) FROM Person FULL OUTER JOIN Profit ON Person.id = Profit.id AND Profit.[DATE] = CAST(getdate () -1 as Date) 现在返回70行 每月视图: SELECT * (includes sum) FROM Person FULL OUTER JOIN Profit ON Person
SELECT * (includes sum)
FROM
Person
FULL OUTER JOIN Profit
ON Person.id = Profit.id
AND Profit.[DATE] = CAST(getdate () -1 as Date)
现在返回70行
每月视图:
SELECT * (includes sum)
FROM
Person
FULL OUTER JOIN Profit
ON Person.id = profit.id
WHERE
[DATE] BETWEEN CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' + +
CAST(YEAR(GETDATE()) AS VARCHAR)
AND GETDATE()
这将返回40行
现在,在我的select语句中,我想返回daily视图中的所有行,而不管monthly视图中是否有匹配项
现在我想这样的方法会管用的:
SELECT *
FROM
DailyView
LEFT JOIN
MonthlyView
ON DailyView.id = MonthlyView.id
但这只返回40行。我也尝试过完全外部联接,但仍然只返回40行。这可能是什么原因?谢谢您的
WHERE
子句正在撤消外部联接
您可以通过将条件移动到ON
子句并删除WHERE
子句来解决问题
您的查询在使用
完全外部联接时可疑<在定义良好的键上连接表时,通常不需要code>完全外部连接。您的WHERE
子句正在撤消外部连接
您可以通过将条件移动到ON
子句并删除WHERE
子句来解决问题
您的查询在使用完全外部联接时可疑<当在定义良好的键上连接表时,通常不需要代码>完全外部连接。月度视图必须
SELECT * (includes sum)
FROM
Person
FULL OUTER JOIN Profit
ON Person.id = profit.id
AND [DATE] BETWEEN CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' + +
CAST(YEAR(GETDATE()) AS VARCHAR)
AND GETDATE()
每月视图必须
SELECT * (includes sum)
FROM
Person
FULL OUTER JOIN Profit
ON Person.id = profit.id
AND [DATE] BETWEEN CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' + +
CAST(YEAR(GETDATE()) AS VARCHAR)
AND GETDATE()
您应该显示示例数据和所需结果。完全外部联接
可疑。您应该显示示例数据和所需结果。完全外部联接
可疑。我尝试了正常联接,但结果相同。键没有很好地定义>>>您的WHERE子句正在撤消外部联接他的视图不需要完全联接,这是真的,但它与最终结果的关系如何?我需要一个完全外部原始联接,因为在这两个视图中都有空值need@sepupic . . . 最后一个查询甚至没有引用与前两个查询相同的表。据推测,对dailyview
或monthlyview
的引用是对原始查询的引用,它们确实有where
子句。我尝试过普通联接,但它产生了相同的结果。键没有很好地定义>>>您的WHERE子句正在撤消外部联接他的视图不需要完全联接,这是真的,但它与最终结果的关系如何?我需要一个完全外部原始联接,因为在这两个视图中都有空值need@sepupic . . . 最后一个查询甚至没有引用与前两个查询相同的表。大概,对dailyview
或monthlyview
的引用是对原始查询的引用,它们确实包含where
子句。