查看 - 没有结果

时间:2014-07-16 03:39:30

标签: sql sql-server view

我在DB1上有View1查询DB3并输出预期结果。我已将View1编写为CREATE TO脚本,将USE子句编辑为USE DB2并执行。

View1现在在DB2上。当我在DB2上运行View1时,它会立即执行,但结果集中没有记录。

这似乎是一个许可问题,但我看不出任何明显不幸的事情。

  • 注意:DB2是一个新数据库。
  • DB1 2& 3都在同一个SQL Server上
  • SQL Server版本9.0 SP4(2005)

正在将视图移动到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)
        )

1 个答案:

答案 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)