2016-01-20 57 views
0

我在SQL SERVER中创建了一些视图。我有一个最后的观点,我把所有其他人结合在一起。这是我想用来填充我的tblInfoTable的视图。事情是,我有3个查询出售,购买,返回,我需要过滤FROM和TO日期。出于测试目的,我在设置视图以确保它们正常工作时对这些日期进行了硬编码。因为我是SQL新手,我没有意识到我无法将参数传递给视图。但现在全部完成了,我正在编写一个简单的存储过程,我想要传递这两个值。因此,这里是怎么一回事呢....SQL SERVER视图和存储过程问题?

Truncate table tbl_InfoTable <- table where I want to enter data 
INSERT INTO tbl_InfoTable 
(UserID, CompanyID, CompanyName, Sold, Bought, Returned) 
SELECT 
'1234',  
CompanyID, 
CompanyName, 
Sold, 
Bought, 
Returned 
FROM vBegRollFwdCompleted <-- This is my main VIEW from which I'd be able to select everything if it wasnt for the fact that I need filtering in SOLD BOUGHT RETURNED. 

Where vAdded.transDate between '12/1/2014' and '12/31/2015' <-- here's where the issue arises. I added a field in my vADDED view TransDate; where; >1/1/1995 since I needed to have it there in order to reference it. But when i write this WHERE statement it tells me that "The multi-part identifier "***vAdded.transDate" could not be bound."*** 

我只是想为附加值做到这一点。我不知道这个问题可能是什么?

+0

你的FROM引用视图vBegRollFwdCompleted但你的条件引用vAdded ?? – techspider

+1

如果transDate是vBegRollFwdCompleted的一部分,则可以在不添加vAdded的情况下对其进行过滤 – techspider

+0

这不是。我只在vAdded中使用TransDate和WHERE过滤器,所以它不会在VIEW中显示为字段。如果我添加了TransDate,它会在我拉起数据时混淆数据。 – barry17

回答

1

问题是vAdded视图不是查询的一部分,即使它构成vBegRollFwdCompleted的一部分。你可以改变vBegRollFwdCompleted视图来包含transDate列,并将你的WHERE子句改为引用vBegRollFwdCompleted.transDate,或者你可以将vAdded视图重新加入到vBegRollFwdCompleted中......但是在那时你正在使用SQL Server select从这个观点多次。