Ich habe eine gespeicherte Prozedur, die 4 temporäre Tabellen erstellt und dann Datensätze mit einer großen Auswahl mit inneren Verknüpfungen am Ende zurückgibt. Dies ist eine beschnittene Version der Auswahl, die Datensätze zurückgibt.SQL-Update basierend auf Anzahl
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
Beachten Sie, dass es mehrere #TEMP_Receive und #TEMP_Return Datensätze für die gleiche ID1 und der #TEMP_Submittal Tisch sein kann, ist das, was sie verbindet.
Ich muss diese Prozedur ändern, um die Anzahl der Feiertage zwischen den zwei Statusdaten in zwei verschiedenen Tabellen aufzunehmen, die in den Ergebnissen enthalten sind. Ich kann die Anzahl der Feiertage von einer separaten Tabelle aus zählen. Etwas wie dieses:
Select count(*)
From Holiday_List
Where Holiday_Date between REC.Status_Date and RET.Status_Date
Ich fügte der #Temp_Receive Tabelle eine Spalte Holiday_Count hinzu. Wie kann ich die Spalte Holiday_Count im Join mit der Zählung aus der Tabelle Holiday_List aktualisieren? Ich habe so etwas ausprobiert, aber von dem, was ich finden kann, ist dies nicht fern gültige SQL-Syntax.
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)
Ich bin mit MS SQL Server 2012.
Das funktionierte wie ein Zauber. Netter Schritt weise Antwort. Danke für die Hilfe! –