Wenn ich aus einer Tabellengruppe nach Monat, Tag, Jahr, wähle, werden nur Zeilen mit Datensätzen zurückgegeben und Kombinationen ohne Datensätze ausgeschlossen, so dass sie auf einen Blick erscheinen Damit jeder Tag oder Monat Aktivität hat, müssen Sie die Datumsspalte aktiv auf Lücken hin untersuchen. Wie kann ich eine Zeile für jeden Tag/Monat/Jahr erhalten, auch wenn keine Daten in T-SQL vorhanden sind?sql fehlende Zeilen bei Gruppierung nach DAY, MONTH, YEAR
Antwort
My developer bekam mit diesem Code zu mir zurück, Unterstrichen zu Striche konvertiert, da Stackoverflow Unterstrichen wurde Mangeln - keine Zahlen Tabelle erforderlich. Unser Beispiel ist durch eine Verknüpfung mit einer anderen Tabelle etwas kompliziert, aber vielleicht hilft das Codebeispiel jemandem irgendwann.
declare @career-fair-id int
select @career-fair-id = 125
create table #data ([date] datetime null, [cumulative] int null)
declare @event-date datetime, @current-process-date datetime, @day-count int
select @event-date = (select careerfairdate from tbl-career-fair where careerfairid = @career-fair-id)
select @current-process-date = dateadd(day, -90, @event-date)
while @event-date <> @current-process-date
begin
select @current-process-date = dateadd(day, 1, @current-process-date)
select @day-count = (select count(*) from tbl-career-fair-junction where attendanceregister <= @current-process-date and careerfairid = @career-fair-id)
if @current-process-date <= getdate()
insert into #data ([date], [cumulative]) values(@current-process-date, @day-count)
end
select * from #data
drop table #data
einen Kalender-Tabelle erstellen und äußere Verknüpfung auf dem Tisch
Blick in ein numbers table verwenden. Obwohl es hackisch sein kann, ist es die beste Methode, um fehlende Daten schnell abzufragen oder alle Daten anzuzeigen, oder alles, wo Sie Werte innerhalb eines Bereichs untersuchen möchten, unabhängig davon, ob alle Werte in diesem Bereich verwendet werden.
Aufbauend auf dem, was SQLMenace gesagt hat, können Sie einen CROSS JOIN verwenden, um die Tabelle schnell zu füllen oder effizient im Speicher zu erstellen.
http://www.sitepoint.com/forums/showthread.php?t=562806
Die Aufgabe für einen kompletten Satz von Terminen ruft links verbunden auf Ihre Daten, wie
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 als
definiert ist
-- 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
- 1. Get YEAR, MONTH und DAY mit AngularJS
- 2. Wie funktioniert die Gruppierung nach Rollup in R? (Wie SQL)
- 3. Java Gruppierung Array nach Jahr, Monat
- 4. Zeilen zählen in SQL stament mit Gruppierung nach incrementalen Variablen
- 5. Sql Gruppierung
- 6. Zeilen nach Gruppe zusammenführen
- 7. Oracle SQL-WHERE MONTH = N
- 8. Gruppierung nach einer Spalte und zwei Zeilen
- 9. SQL Server-Trigger - Gruppierung nach Transaktionen
- 10. Bigquery Gruppierung nach rollenden Tagen
- 11. Fehlende Zeilen einfügen
- 12. SQL Update Count Details nach der Gruppierung
- 13. Gruppierung SQL Ergebnisse nach Jahr und zählen
- 14. LINQ to SQL - Gruppierung nach Stunden
- 15. Gruppierung nach Datumsbereich in T-SQL
- 16. Verwenden der Gruppierung nach Funktion in SQL
- 17. Gruppierung nach ähnlichen Zeichenfolgen - Transact SQL
- 18. SQL-Gruppierung/Kontraktwert
- 19. Gruppierung Zeilen Python Pandas
- 20. Wie kann man die Funktionen year() und month() in NH Criteria API verwenden?
- 21. Gruppierung nach Tagen Created_At
- 22. Finding Year Bereich in SQL (Microsoft Access)
- 23. Wie verwende ich einen String/column Wert als mysql Datumsintervallkonstante (DAY, MONTH ...)?
- 24. Gruppierung nach Woche/Monat/etc & ActiveRecord?
- 25. SQL Gruppierung von Daten
- 26. T-SQL-Gruppierung Frage
- 27. Gruppierung der Zeilen unter Berücksichtigung der "Differenz" zwischen den Zeilen
- 28. SQL-Gruppierung und Summen
- 29. BigQuery Fehler: Fehlende Zeilen
- 30. Gruppierung von Zeilen in ngrepeat