2014-07-16 72 views
0

我在DB1上查詢DB3並輸出預期結果。我將View1編寫爲CREATE TO,將USE子句編輯爲USE DB2並執行。查看 - 無結果

View1現在在DB2上。當我在DB2上運行View1時,它立即執行,但結果集中的記錄數爲零。

這看起來像是一個許可問題,但我看不出任何明顯的不幸。

  • 注意:DB2是一個新的數據庫。
  • DB1 2 & 3都是相同的SQL Server
  • SQL Server版本9.0 SP4(2005)

查看被轉移到DB2的清理和文件excerise的一部分

由於上您的幫助

VIEW:

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

視圖是一個複雜和冗長的查詢,將嘗試一個樣本 – LateBloomer

+0

db2中的視圖仍然查詢db3? – Rodrigo

回答

0

由於DB2是一個新的數據庫,並且創建的VIEWs已經從DB1腳本化;使用ISNULL引用新創建的RunDate表(RunDate.testdate 導致在哪裏排除任何匹配

DB2中新的Rundate表包含NO記錄,而DB1中的同一個表包含1條NULL記錄。

查詢預計RunDate.Testdate永遠是NULL

我簡化了查詢,不依賴於一個靜態表

WHERE子句現在是:。

WHERE的StartDate BETWEEN DATEADD(月,DATEDIFF(月,0,GETDATE())),0) AND DATEADD(月,DATEDIFF(月,0,GETDATE())) - 12,0)