Sql server 如果视图SQL Server中没有任何联接,则视图及其对应表的记录计数不匹配

Sql server 如果视图SQL Server中没有任何联接,则视图及其对应表的记录计数不匹配,sql-server,Sql Server,我在sql server中有如下视图: use database2 Go CREATE VIEW view1 AS WITH date_cte(datecol) AS (select getdate()) Select Col1, Col2, ,.... ,[Select datecol from date_cte] FROM database1.schema1.TABLE 在不同数据库中的表的顶部。 表的记录计数以及使用语句的视图 Select

我在sql server中有如下视图:

use database2
Go
CREATE VIEW view1
AS
WITH date_cte(datecol)
AS (select getdate())

Select Col1, 
       Col2,
       ,....
       ,[Select datecol from date_cte] 
FROM database1.schema1.TABLE
在不同数据库中的表的顶部。 表的记录计数以及使用语句的视图

Select count(1) from database1.schema1.TABLE -- 15487212
Select count(1) from database2.schema2.view1 -- 13324921

这个问题有解决办法吗

首先。。。您肯定应该改进您的代码:

USE database2
Go
CREATE VIEW schema2.view1
AS
SELECT Col1, 
       Col2,
       ,....
       ,getdate()
FROM database1.schema1.TABLE
为什么只在约会时使用CTE?另一件事,这可能会导致你的错误。创建视图时不定义模式。也许您的视图是在不同的模式中创建的?我已经将schema2添加到您的CREATE中,因为您在最后查询schema2

顺便说一下。您的选择也可以改进:

Select count(*) from database1.schema1.TABLE -- ??
Select count(*) from database2.schema2.view1 -- ???

实际上,这里的问题是,当我运行查询以计数记录时,数据正在加载到源表中。 因此,计数差异占主导地位。
谢谢你的意见

这个问题毫无意义。它相当于两个不同数据库中的数据不同。如果表存在于具有相同数据集的两个数据库中,请删除数据库名称