Cuestión : Cómo puedo incluir meses con las filas cero en las ventas por el informe de Month

Hola los individuos,

I tienen TSQL para conseguirme los datos para un informe/un gráfico que demuestran ventas por mes.  Sin embargo, mientras que vuelve los valores correctos si no hay filas por un mes particular no se vuelve nada.  En tal situación necesito volver una fila adicional con un valor cero para cada mes que falta. ¿el

How puede mejor de I alcanzar esto satisface?  

Chris Bray
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
AÑO notpretty del >SELECT " del class= " de " codeSnippet797449 del id= del
           
class= del

Respuesta : Cómo puedo incluir meses con las filas cero en las ventas por el informe de Month

>> una vez más no enteramente práctico.  Terminaríamos para arriba con una tabla enorme con diario de MinDate a MaxDate incluido.  ¿Tiene que haber una mejor manera? <>
Convengo.

En lugar, crear una tabla de números secuenciales -- una tabla de la “cuenta”, si usted no tiene ya uno.
Entonces usted puede hacer algo como abajo.

RE: mecánicos de la tabla de la cuenta::
Apenas números secuenciales a partir de la 0 a lo que, dicen 100.000.  Especificar un índice único, arracimado en el número, con un fillfactor de 100 (esta tabla nunca será actualizada o insertado entre las filas existentes, tan no hay necesidad de freespace en la tabla).  Para el funcionamiento máximo, fijarlo a inalterable (if/when usted necesita agregar las filas, usted lo fijaría naturalmente temporalmente a updateable otra vez).
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
DECLARAR la fecha y hora del @startDate
DECLARAR la fecha y hora del @endDate

SELECCIONAR EL AÑO (DATEADD (MES, sn.num, TransactionDate)) COMO TransactionYear,
MES (DATEADD (MES, sn.num, TransactionDate)) COMO TransactionMonth,
SUMA (unirse (BaseDebitAmount, 0) - se une (BaseCreditAmount, 0)) COMO GrossMonthlySales

Del sn sequentialNumbersTable 
EXTERNOS IZQUIERDOS ENSAMBLAN GeneralJournal EN TransactionDate ENTRE DATEADD (MES, sn.num, @startDate) Y DATEADD (ms, -3, DATEADD (MES, sn.num + 1, el @startDate))

DONDE sn.tally ENTRE 0 Y DATEDIFF (MES, @startDate, @endDate)
Y… otras condiciones como antes…
Otras soluciones  
 
programming4us programming4us