我在DB1上有View1查询DB3并输出预期结果。我已将View1编写为CREATE TO脚本,将USE子句编辑为USE DB2并执行。
View1现在在DB2上。当我在DB2上运行View1时,它会立即执行,但结果集中没有记录。
这似乎是一个许可问题,但我看不出任何明显不幸的事情。
正在将视图移动到DB2,作为清理和文档的一部分
感谢您的帮助
查看:
USE [DB2]
GO
WHERE (
DB3.dbo.ABB.StartDate
BETWEEN
CAST(
FLOOR(
CAST(
DATEADD("month", - 12, ISNULL(RunDate.testdate, GETDATE()) -
DAY(ISNULL(RunDate.testdate, GETDATE())) + 1)
AS FLOAT)
)
AS DATETIME)
AND
CAST(
FLOOR(
CAST(
ISNULL(RunDate.testdate, GETDATE())
- DAY(ISNULL(RunDate.testdate, GETDATE())) + 1
AS FLOAT)
)
AS DATETIME)
)
答案 0 :(得分:0)
由于DB2是一个新数据库,所创建的VIEW是从DB1编写的;使用ISNULL(RunDate.testdate)对新创建的RunDate表的引用 导致WHERE CLAUSE排除任何匹配。
DB2中的新Rundate表包含NO记录,而DB1中的同一个表包含1个NULL记录。
查询期望RunDate.Testdate始终为NULL。
我已将查询简化为不依赖静态表。
WHERE子句现在是:
在哪里StartDate BETWEEN DATEADD(月,DATEDIFF(月,0,GETDATE())),0) 和 DATEADD(月,DATEDIFF(月,0,GETDATE())) - 12,0)