Vraag : Hoe ik maanden met nul rijen in Verkoop door het rapport van de Maand kan omvatten

Hallo hebben de Kerels,

I TSQL om me te krijgen de gegevens voor een rapport/een grafiek die verkoop tonen tegen maand.  Nochtans, terwijl het de correcte waarden terugkeert als er geen rijen voor een bepaalde maand zijn is niets teruggekeerd.  In zulk een situatie I behoefte om een extra rij met een nul waarde voor elke ontbrekende maand terug te keren.

How kan ik beste dit alstublieft bereiken?  

Chris Bray
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
van
SELECT JAAR (TransactionDate) ALS TransactionYear,
MAAND (TransactionDate) ALS TransactionMonth,
SOM (voeg me (BaseDebitAmount, 0) samen - voeg me (BaseCreditAmount, 0)) samen ALS GrossMonthlySales
VAN GeneralJournal
WAAR MasterRecord 
EN (TransactionTypeId = 12 OF TransactionTypeId = 13 OF TransactionTypeId = 14) 
EN TransactionDate TUSSEN het „00:00 van 01/11/2009: 00“ EN „van 31/10/2010 23:59: 59“
GROEP TEGEN JAAR (TransactionDate), MAAND (TransactionDate)
ORDE DOOR TransactionYear, TransactionMonth;

Antwoord : Hoe ik maanden met nul rijen in Verkoop door het rapport van de Maand kan omvatten

Praktisch >> opnieuw, niet volledig.  Wij zouden omhoog met een reusachtige lijst met elke dag van MinDate aan inbegrepen MaxDate beëindigen.  Daar moet een betere manier zijn? <>
Ik ga akkoord.

In plaats daarvan, cre�ër een lijst van opeenvolgende aantallen -- een „aantekenings“ lijst, als u reeds niet hebt.
Dan kunt u iets als hieronder doen.

RE: de werktuigkundigen van de aantekening dienen: in:
Enkel zeggen de opeenvolgende aantallen van 0 aan wat, 100.000.  Specificeer een unieke, gegroepeerde index op het aantal, met een fillfactor van 100 (deze lijst zal nooit bijgewerkt worden of tussen bestaande rijen opgenomen, zodat is er geen behoefte aan freespace in de lijst).  Voor maximum prestaties, plaats het aan readonly (if/when die u hebt moeten om rijen toevoegen, natuurlijk u plaatsen=zou= het tijdelijk opnieuw aan updateable).
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VERKLAAR @startDate datetime
VERKLAAR @endDate datetime

SELECTEER JAAR (DATEADD (MAAND, sn.num, TransactionDate)) ALS TransactionYear,
MAAND (DATEADD (MAAND, sn.num, TransactionDate)) ALS TransactionMonth,
SOM (voeg me (BaseDebitAmount, 0) samen - voeg me (BaseCreditAmount, 0)) samen ALS GrossMonthlySales

VAN sequentialNumbersTable Sn 
LINKER BUITEN SLUIT ZICH AAN BIJ GeneralJournal OP TransactionDate TUSSEN DATEADD (MAAND, SN.NUM, @STARTDATE) EN DATEADD (LIDSTATEN, -3, DATEADD (MAAND, SN.NUM + 1, @STARTDATE))

WAAR SN.TALLY TUSSEN 0 EN DATEDIFF (MAAND, @STARTDATE, @ENDDATE)
EN… andere voorwaarden zoals vóór…
Andere oplossingen  
 
programming4us programming4us