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的值的外部選擇。等等。我是否錯誤地對錶進行了別名?
糟糕。我忘了將列名從AccountUserId更改爲UserId。這只是當第二雙眼睛有幫助時的其中一次。非常感謝你。 – busha 2012-03-16 17:32:53