Pytanie : Jak móc I miesiąc z raport rząd w Sprzedaż Miesiąc raport

Cześć Facet,

I mieć TSQL the dane dla raportowy/wykres sprzedaż miesiąc.  , Podczas gdy ono wracać the poprawny wartość jeżeli tam  być żadny rząd dla szczególny miesiąc jeżeli wracać.  W taki sytuacja I potrzebować dodatkowy rząd z dodatkowy wartość dla dodatkowy brakujący miesiąc.

How móc I best to zadawalać?  

Chris Bray
(1):
2:
3:
4:
5:
6:
7:
8:
9:
SELECT ROK (TransactionDate) JAKO TransactionYear,
MIESIĄC (TransactionDate) JAKO TransactionMonth,
SUMA (Coalesce (BaseDebitAmount, (0)) - Coalesce (BaseCreditAmount, (0))) JAKO GrossMonthlySales
OD GeneralJournal
DOKĄD MasterRecord 
I (TransactionTypeId = 12 LUB TransactionTypeId = 13 LUB TransactionTypeId = 14) 
I TransactionDate MIĘDZY "01/11/2009 00:00: 00" I "31/10/2010 23:59: 59"
GRUPA ROK (TransactionDate), MIESIĄC (TransactionDate)
ROZKAZ TransactionYear, TransactionMonth;

Odpowiedź : Jak móc I miesiąc z raport rząd w Sprzedaż Miesiąc raport

>> Znowu, zupełnie praktyczny.  My kończyć zawierać z ogromny stół z codzienny od MinDate MaxDate zawierać.  Tam  musieć lepszy sposób? <>
I zgadzać się.

Zamiast, tworzyć stół sekwencyjny liczba -- "karbownica" stół, jeżeli ty już mieć jeden.
Wtedy ty móc móc jak coś.

PONOWNY: mechanik the karbownica stół::
Właśnie sekwencyjny liczba od (0) (0), mówić 100,000.  Precyzować unikalny, rozgałęźnik wskaźnik na the liczba, z fillfactor 100 (ten stół nigdy Aktualizować lub Między istniejący rząd, w ten sposób tam  być żadny potrzeba dla freespace w the stół).  Dla ono występ, ustawiać ono readonly (jeśli/kiedy ty potrzebować rząd, naturalnie ty chwilowo ustawiać ono updateable znowu).
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
OZNAJMIAĆ @startDate datetime
OZNAJMIAĆ @endDate datetime

WYBIERAĆ ROK (DATEADD (MIESIĄC, sn.num, TransactionDate)) JAKO TransactionYear,
MIESIĄC (DATEADD (MIESIĄC, sn.num, TransactionDate)) JAKO TransactionMonth,
SUMA (Coalesce (BaseDebitAmount, (0)) - Coalesce (BaseCreditAmount, (0))) JAKO GrossMonthlySales

OD sequentialNumbersTable sn 
LEWY ZEWNĘTRZNY ŁĄCZYĆ GeneralJournal NA TransactionDate MIĘDZY DATEADD (MIESIĄC, sn.num, @startDate) I DATEADD (MS, -3, DATEADD (MIESIĄC, sn.num + (1), @startDate))

DOKĄD sn.tally MIĘDZY (0) I DATEDIFF (MIESIĄC, @startDate, @endDate)
I… inny warunek przedtem…
Inne rozwiązania  
 
programming4us programming4us