これは正しい形式になっているといいですか?私はこの手順に問題があります。私は宣言を取り除きました。あなたが見ているのは本体です。私がしようとしているのは、(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'。
Line 31は、FullName、InvoicesAssigned、InvoicesApprovedの値を取得する外部セレクトです。等々。テーブルのエイリアスを間違っていますか?
私は、列名をAccountUserIdからUserIdに変更したことを忘れていました。それは、目の第二のペアが助けになる時の一つです。どうもありがとうございました。 – busha