Ich möchte Daten aus einer Tabelle für einen bestimmten Datumsbereich zurückgeben. Dafür habe ich eine gespeicherte Prozedur, die @fromDate
und @toDate
Parameter akzeptiert.Wie können leere Daten zurückgegeben werden, auch wenn es für einen bestimmten Bereich keine gibt?
Die SQL sieht wie folgt aus:
DECLARE @fromDate DATETIME, @toDate DATETIME
SET @fromDate = '2017-04-01'
SET @toDate = '2017-04-07'
SELECT MD.ID, MD.Name, RT.Result, RT.DateOn
FROM MainData MD
LEFT JOIN ResultsTable RT
RT.MainDataID = MD.ID
WHERE RT.DateOn >= @fromDate AND RT.DateOn <= @toDate
Dies funktioniert wie erwartet und gibt die Ergebnisse in diesem Bereich, aber mein Problem ist, dass ich leer Ergebnisse auch zurückkehren wollen, wenn es keine Ergebnisse in der ResultsTable
sind. Grundsätzlich, wenn ich Ergebnisse für einen Zeitraum von 7 Tagen anfordere, sollte ich 7 Ergebnisse bekommen, wobei einige oder alle nicht existent sein könnten.
Ich habe versucht, eine Dummy-Tabelle mit den Daten in diesem Bereich zu schaffen, aber ich bin nicht sicher, wie es mit den anderen SQL beitreten: wird
INSERT INTO #tempDates
SELECT DATEADD(DAY, nbr - 1, @fromDate)
FROM (SELECT ROW_NUMBER() OVER (ORDER BY c.object_id) AS Nbr
FROM sys.columns c
) nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @fromDate, @toDate)
Jede Hilfe sehr seine
Bitte geben Sie eine Probe von Daten in der Hauptdatentabelle und Ihre Ergebnistabelle, und auch, wie das sa mple Daten sollten nach Ihrem Endergebnis suchen. Tun Sie es in der Form 'declare @ MainData table (Id int ...); Einfügen in @MainData-Werte ... ' – BeanFrog