2012-03-16 21 views
0

我希望這是正確的格式。我在這個程序中遇到問題。我已經剝去了宣言,你看到的是主體。我所要做的就是創建一個表變量(在SQL SERVER 2000中),並從其中包含的數據中提取一些指標。在子選擇查詢中混淆臨時表的潛在問題

DECLARE @InvoiceData TABLE 
(
UserID  INT 
, FullName VARCHAR 
, StatusId INT 
, Status VARCHAR 
, DateCreated DATETIME 
) 

--INSERT INTO @InvoiceData(UserID, FullName, StatusId, Status, DateCreated) 
SELECT 
tblInvoiceInstructions.AccountantUserId 
, Users.Name + ', ' + Users.First_Name AS FullName 
, tblInvoice.CurrentWorkflowStatusId AS StatusID 
, dbo.ufnGetGenericCodeLongDescText(tblInvoice.CurrentWorkflowStatusId,GETDATE()) AS Status 
, CONVERT(VARCHAR, tblInvoice.DateCreated, 101) AS DateCreated 
FROM tblInvoiceInstructions 
JOIN tblInvoice ON tblInvoice.Project_ID = tblInvoiceInstructions.ProjectID 
LEFT JOIN dbo.Users ON tblInvoiceInstructions.AccountantUserId = Users.UserId 
WHERE tblInvoice.DateCreated BETWEEN @StartDate AND @EndDate 


SELECT FullName, InvoicesAssigned, InvoicesApproved, InvoicesRejected, InvoicesAssigned-InvoicesApproved-InvoicesRejected AS InvoicesRemaining 
FROM 
(
SELECT DISTINCT FullName 
,ISNULL((SELECT COUNT(t2.StatusID) FROM @InvoiceData t2 WHERE t2.AccountantUserId = T1.AccountantUserId GROUP BY FullName),0) AS InvoicesAssigned 
,ISNULL((SELECT COUNT(t2.StatusID) FROM @InvoiceData t2 WHERE t2.StatusID = 394 AND t2.AccountantUserId = T1.AccountantUserId GROUP BY FullName),0) AS InvoicesApproved 
,ISNULL((SELECT COUNT(t2.StatusID) FROM @InvoiceData t2 WHERE t2.StatusID = 388 AND t2.AccountantUserId = T1.AccountantUserId GROUP BY FullName),0) AS InvoicesRejected 
FROM @InvoiceData T1 
) AS InnerTable 

當我執行存儲過程,它給了我下面的錯誤6次:

消息207,級別16,狀態3,過程uspReportInvoicesProcessedAndWaiting,第31行 無效的列名稱AccountantUserId「。

第31行是我選擇FullName,InvoicesAssigned,InvoicesApproved的值的外部選擇。等等。我是否錯誤地對錶進行了別名?

回答

0

在第二個查詢中選中此行。

ISNULL((SELECT COUNT(t2.StatusID) FROM @InvoiceData t2 
WHERE t2.AccountantUserId = T1.AccountantUserId GROUP BY FullName),0) 
AS InvoicesAssigned 

注: @InvoiceData別名T2沒有定義AccountantUserId列。 t2.AccountantUserId不存在。

檢查@InvoiceData表定義

+0

糟糕。我忘了將列名從AccountUserId更改爲UserId。這只是當第二雙眼睛有幫助時的其中一次。非常感謝你。 – busha 2012-03-16 17:32:53