2012-03-16 10 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'。

Line 31は、FullName、InvoicesAssigned、InvoicesApprovedの値を取得する外部セレクトです。等々。テーブルのエイリアスを間違っていますか?

答えて

0

2番目のクエリでこの行を確認します。

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