Pytanie : Aktualizacja stół basxed na rezultat zapytanie

Ekspert, I mieć the następujący zastępca stół @tmpContacts:

ContactID   ClientID   NumContactsNeeded   NumContactsMade   TimePeriod
-------------   ----------  ---------------------------   ------------------------   --------------
(1) 3 2 NIEOBOWIĄZUJĄCY Day
2 4 (1) NIEOBOWIĄZUJĄCY Week
3 5 (1) NIEOBOWIĄZUJĄCY Month

I am the NumContactsMade pole using the następujący zapytanie:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
UPDATE @tmpContacts
USTALONY NumContactsMade = b.Contacts OD
	(
		WYBRANY ClientID, SUMA (Kontakt) JAKO Kontakt 
		OD 
			(
				WYBRANY ClientID, OBLICZENIE (Client_Contact_Tbl.ClientID) JAKO Kontakt
				OD Client_Contact_Tbl
				GRUPA ClientID, Contact_Status, ContactDate
				Contact_Status BYĆ NIEOBOWIĄZUJĄCY I ContactDate >= "6/20/2010"
			) a
		GRUPA A.ClientID
	) B, @tmpContacts


Which dawać the następujący rezultat:

ContactID   ClientID   NumContactsNeeded   NumContactsMade   TimePeriod
-------------   ----------  ---------------------------   ------------------------   --------------
(1) 3 2 (1) Day
2 4 (1) (1) Week
3 5 (1) (1) Month

However, the rezultat musieć:

ContactID   ClientID   NumContactsNeeded   NumContactsMade   TimePeriod
-------------   ----------  ---------------------------   ------------------------   --------------
(1) 3 2 (1) Day
2 4 (1) 2 Week
3 5 (1) NIEOBOWIĄZUJĄCY Month

Since the rezultat the nieobowiązujący zapytanie być:

ClientID   Contacts
----------   -----------
3 1
4 2
13 1

What być I źle?

Odpowiedź : Aktualizacja stół basxed na rezultat zapytanie

aktualizacja tempAlias
ustawiać NumContactsMade=Contacts
od
(
            WYBRANY ClientID, SUMA (Kontakt) JAKO Kontakt
            OD
                  (
                        WYBRANY ClientID, OBLICZENIE (Client_Contact_Tbl.ClientID) JAKO Kontakt
                        OD Client_Contact_Tbl
                        GRUPA ClientID, Contact_Status, ContactDate
                        Contact_Status BYĆ NIEOBOWIĄZUJĄCY I ContactDate >= "6/20/2010"
                  ) a
            GRUPA A.ClientID
) derivedTable
łączyć @tempContacts tempAlias na derivedTable.ClientId=tempAlias.ClientId

Stół stół musieć poprawny (chociaż prawdę mówiąc I myśleć ono móc czyścić czyścić eliminować the pochodny stół).  Logicznie I zastanawiać się jeżeli twój subquery musieć być grupowanie na contactid raczej klient id, ale I przypuszczać jeżeli kontakt i klient być 1:1 ono liczyć się.
Inne rozwiązania  
 
programming4us programming4us