私は4つの一時テーブルを作成し、最後に内側の結合を持つ大きな選択でレコードを返すストアドプロシージャを持っています。これはレコードを返すselectのカットダウンバージョンです。同じID1と#TEMP_Submittalテーブルに対して複数の#TEMP_Receiveと#TEMP_Returnたレコードが存在する可能性があること数に基づくSQLの更新
SELECT R.*,
REC.Status_Date as [Receive Status Date],
RET.Status_Date as [Return Status Date]
FROM #Records R
INNER JOIN #Temp_Receive REC ON R.ID1 = REC.ID1
INNER JOIN #Temp_Return RET ON R.ID1 = RET.ID1
INNER JOIN #Temp_Submittal SUB ON SUB.RecID = REC.ID AND SUB.RetID = RET.ID
注意それらを接続するものです。
結果に含まれる2つの異なるテーブルに2つのステータス日付の間の休日の数を含めるには、この手順を変更する必要があります。私は休暇の数を別のテーブルから数えることができます。このようなもの:
Select count(*)
From Holiday_List
Where Holiday_Date between REC.Status_Date and RET.Status_Date
#Temp_ReceiveテーブルにHoliday_Count列を追加しました。 Holiday_Listテーブルのカウントを使用して、参加のHoliday_Count列を更新するにはどうすればよいですか?私はこれを試したことがありますが、私は見つけることができますが、これはリモートで有効なSQL構文ではありません。
UPDATE
( #Records R
INNER JOIN #TEMP_Receive REC ON R.ID1 = REC.ID1
INNER JOIN #TEMP_Return RET ON R.ID1 = RET.ID1
INNER JOIN #TEMP_Submittal SUB ON SUB.RecID = REC.ID AND SUB.RetID = RET.ID)
SET REC.Holiday_Count =
(SELECT COUNT(*)
FROM HOLIDAY_LIST HOL
WHERE HOL.HOLIDAY_DATE between #TEMP_Receive.Status_Date AND #TEMP_Receive.Status_Date)
は、私は、行が更新されるかを確認するためにselect
ステートメントを構築してみMS SQL Serverの2012
これは魅力的だった。ニースステップワイズの答え。助けてくれてありがとう! –