2016-09-08 3 views
0

Ich habe eine Tabelle, in der Zeilen Daten als Montag Daten der Wochen haben. Einige aufeinanderfolgende Zeilen haben möglicherweise kein aufeinanderfolgendes Wochendatum und haben daher Lücken dazwischen. Dieses Bild wird die Situation klar: enter image description hereWie füge ich Termine in zwei Wochen hinzu?

Wie aus dem Bild gibt es eine Lücke zwischen weekdates 2016.08.08 und 2016.09.05 als Zeilen mit weekdates ‚2016.08.15‘, '2016 -08-22 ',' 2016-08-29 'gibt es nicht vor' 2016-09-05 '.

Also, wie kann ich diese Lücke mit Zeilen für alle diese Daten und Null für Rest zwei Spalten füllen?

+0

bitte einfügen Bild als Text – TheGameiswar

+0

@TheGameiswar die Bild-URL ist http - dies in einer lückenlosen Liste aller montags zusammen mit Werten führen soll: //i.stack.imgur. com/N5EBN.png –

+0

Bilder sind in meiner Domäne blockiert, kann der Fall mit den meisten – TheGameiswar

Antwort

1

Verwendung eines Tally Tabelle

Sie können diesen Code versuchen, die eine Liste von montags generieren

DECLARE @start INT=0; 
DECLARE @end INT=20; 
DECLARE @step INT=7; 

WITH x AS(SELECT 1 AS N FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS tbl(N))--10^1 
,N3 AS (SELECT 1 AS N FROM x CROSS JOIN x AS N2 CROSS JOIN x N3) --10^3 
,Tally AS(SELECT TOP(@[email protected] +1) (ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) + @start -1) * @step AS Nr FROM N3 
      CROSS JOIN N3 N6 CROSS JOIN N3 AS N9) 
SELECT DATEADD(DAY,Nr,{d'2016-08-01'}) AS Monday 
FROM Tally 

Sie die Anzahl der erzeugten Zeilen mit @start angeben und @end sollte die @step sein 7 in Ihrem Fall. Dies fügt 0, 7, 14, 21, ... zu einem bestimmten Datum hinzu (was in Ihrem Fall ein Montag sein sollte).

Verwenden Sie jetzt eine LEFT JOIN, um dies mit Ihren Tabellendaten zu kombinieren. wenn es welche gibt ...

+0

Danke, das wird für mich funktionieren. –

0

Versuchen Sie folgendes:

SELECT DATEADD(week,1,[select query]) -- In select query write the query 
             -- to get the date to which you need to add 1 week 

enter image description here

In der obigen Abfrage wird es das aktuelle Datum dh 2016-09-08 15:19:06.950 zu nehmen und 1 Woche, um es hinzuzufügen und gibt das resultierende Datum dh 2016-09-15 15:19:40.657

+0

Vielen Dank für die Antwort, aber ich will nicht 1 Woche zu einem beliebigen Datum hinzugefügt, aber ich möchte alle Wochendaten erhalten, die Lücke zwischen füllen könnte 2 Daten wie ich in meinem Beispiel gezeigt habe. –

Verwandte Themen