tsql zusammenfassen sql fehlende Zeilen bei Gruppierung nach TAG, MONAT, JAHR




sql zeile mit maximalwert (4)

Wenn ich aus einer Tabellengruppe den Monat, den Tag, das Jahr auswähle, gibt es nur Zeilen mit Datensätzen zurück und lässt Kombinationen ohne Datensätze aus, so dass es auf einen Blick erscheint, dass jeder Tag oder Monat Aktivität hat, Sie müssen sich das Datum ansehen. Spalte aktiv für Lücken. Wie kann ich eine Zeile für jeden Tag / Monat / Jahr, auch wenn keine Daten vorhanden sind, in T-SQL erhalten?


Die Aufgabe erfordert einen vollständigen Satz von Datumsangaben, die mit Ihren Daten verknüpft werden können, z.


DECLARE @StartInt int
DECLARE @Increment int
DECLARE @Iterations int

SET @StartInt = 0
SET @Increment = 1
SET @Iterations = 365


SELECT
tCompleteDateSet.[Date]
,AggregatedMeasure = SUM(ISNULL(t.Data, 0))
FROM
(

SELECT
[Date] = dateadd(dd,GeneratedInt, @StartDate)
FROM
[dbo].[tvfUtilGenerateIntegerList] (
@StartInt,
,@Increment,
,@Iterations
)
) tCompleteDateSet
LEFT JOIN tblData t
ON (t.[Date] = tCompleteDateSet.[Date])
GROUP BY
tCompleteDateSet.[Date]

wo die Tabellenwertfunktion tvfUtilGenerateIntegerList definiert ist als


-- Example Inputs

-- DECLARE @StartInt int
-- DECLARE @Increment int
-- DECLARE @Iterations int
-- SET @StartInt = 56200
-- SET @Increment = 1
-- SET @Iterations = 400
-- DECLARE @tblResults TABLE
-- (
-- IterationId int identity(1,1),
-- GeneratedInt int
-- )


-- =============================================
-- Author: 6eorge Jetson
-- Create date: 11/22/3333
-- Description: Generates and returns the desired list of integers as a table
-- =============================================
CREATE FUNCTION [dbo].[tvfUtilGenerateIntegerList]
(
@StartInt int,
@Increment int,
@Iterations int
)
RETURNS
@tblResults TABLE
(
IterationId int identity(1,1),
GeneratedInt int
)
AS
BEGIN

DECLARE @counter int
SET @counter= 0
WHILE (@counter < @Iterations)
BEGIN
INSERT @tblResults(GeneratedInt) VALUES(@StartInt + @counter*@Increment)
SET @counter = @counter + 1
END


RETURN
END
--Debug
--SELECT * FROM @tblResults


Erstellen Sie eine Kalendertabelle und einen Outer Join für diese Tabelle


Schauen Sie mit einer Zahlentabelle hinein . Während es hackish sein kann, ist es die beste Methode, die ich habe, um schnell fehlende Daten abzufragen oder alle Daten oder irgendetwas zu zeigen, wo Sie Werte innerhalb eines Bereichs untersuchen wollen, unabhängig davon, ob alle Werte in diesem Bereich verwendet werden.








grouping