Questione : Come posso restituire una fila fittizia in serie di risultato?

La seguente domanda fa un conteggio delle file raggruppate da Date e dalla persona di vendite.  Devo dare a tutta la persona di vendite delle date senza le file un conteggio di zero. È ci un senso fare questo nella domanda in se? class= " lineNumbers " >
1 del >


SELECT codeBody s.eventStartDate, s.salesPersonID, conteggio (s.salesEventID) " del prettyprint " " del class= del id= " codeSnippet804994 del >
0) E (il <> (s.saleEventStatus) " discontinua "))
GRUPPO da s.eventStartDate, s.salesPersonID
AVENDO (((s.eventStartDate) fra #7/4/2010# e #7/10/2010#));
class= > " libero " di 
class= del

Risposta : Come posso restituire una fila fittizia in serie di risultato?

Per intraprendere a cyberkiwi un'azione ulteriore potreste provare quanto segue.  DOVE Richard ha scelto di selezionare data DISTINTA, combinazioni della gente, ciò che segue restituirà un cartesiano si unisce della data/gente (differenza sottile).

eDatePeople.eventStartDate PRESCELTO, eDatePeople.SalesPersonID, conteggio (S3.SalesEventID) come CountEvent
DA (
SELEZIONARE eDates.EventStartDate, ePeople.SalesPersonID
DA
(S1.eventStartDate DISTINTO PRESCELTO dallo S1 smd_salesEvent
DOVE S1.EventStartDate FRA #7/4/2010# e #7/10/2010#
E S1.SaleTypeID = 1 E S1.StoreID <> 0 E S1.SaleEventStatus <> “discontinuano„) come eDates,
(S2.salesPersonID DISTINTI PRESCELTI da S2 smd_salesEvent
DOVE S2.EventStartDate FRA #7/4/2010# e #7/10/2010#
E S2.SaleTypeID = 1 E S2.StoreID <> 0 E S2.SaleEventStatus <> “discontinuano„) come ePeople
) come eDatePeople
LA PARTE DI SINISTRA UNISCE S3 smd_salesEvent
SU eDatePeople.eventStartDate = S3.eventStartDate
E eDatePeople.SalesPersonID = S3.SalesPersonID
GRUPPO da eDatePeople.eventStartDate, eDatePeople.SalesPersonID

Ciò ha due sottointerrogazioni che selezionano le date distinte (eDates) e la gente distinta (ePeople) che corrispondono ai test di verifica che avete selezionato.  Allora li fonde in un cartesiano unisce (eDatePeople) il quel gli dà ogni combinazione di ogni data/persona per quei test di verifica.  Infine unisce il eDatePeople di nuovo a smd_SalesEvent per ottenere il conteggio di SalesEventID per ogni combinazione persona/della data.

Che cosa non fa è di garantire che avrete tutte date quale si presentano fra il vostra inizio e data di estremità, poiché gli altri test di verifica potrebbero restituire le annotazioni zero, o un certo sottoinsieme dei valori.  Inoltre restituisce soltanto le annotazioni per quella gente di vendite che ha almeno un'annotazione che risponde ai vostri test di verifica.  Se una persona è sulla vacanza o non partecipasse ad alcun evento di vendite durante il periodo specificato, il loro nome non rivelerà affatto.

Se vogliate accertarti che tutte le date durante il periodo siano restituite, potreste usare una tabella delle date per fornire la parte dei eDates della domanda anziché la sottointerrogazione che ho usato.
Altre soluzioni  
 
programming4us programming4us