2017-05-19 1 views
1

auszuwählen ich zur Zeit, ob ein bestimmtes „Eigentum“ fehlende Daten zu prüfen versuchen einen Datumswert in die letzten 3 Tage vermisst:Wie fehlender Datumswert

SELECT property, business_date 
    FROM my_table 
     WHERE business_date BETWEEN DATEADD(DAY, -2, @business_date) AND @business_date 
     AND property IN 
     (
     SELECT property 
      FROM my_table 
       WHERE business_date BETWEEN DATEADD(DAY, -2, @business_date) AND @business_date 
        GROUP BY property 
         HAVING COUNT(property) <> 3 
    ) 

Aktuelle Zeit zeigt dies:

0088 2017-05-16 00:00:00.000 
0088 2017-05-18 00:00:00.000 
0094 2017-05-17 00:00:00.000 
0094 2017-05-18 00:00:00.000 

Ich versuche, die fehlenden Werte zu zeigen, nicht die Werte, die ich habe. So würde Ich mag es, mir zu sagen:

0088 2017-05-17 00:00:00.000 
0094 2017-05-16 00:00:00.000 

Ich habe versucht, eine Kalender-Tabelle zu erstellen:

DECLARE @calendar TABLE 
(
    date DATETIME 
) 
INSERT INTO @calendar 
SELECT DATEADD(DAY, -2, @business_date) UNION ALL 
SELECT DATEADD(DAY, -1, @business_date) UNION ALL 
SELECT DATEADD(DAY, 0, @business_date) 
+0

Ich sollte klarstellen ... die Daten sind nicht NULL, sie fehlen vollständig. – zfemmer

+2

Sie werden mit einem Kalender Tisch – scsimon

+0

verbinden Ich habe es versucht und aus irgendeinem Grund konnte ich es immer noch nicht arbeiten zu arbeiten. + – zfemmer

Antwort

1

Sie sollten cross join verschiedene Eigenschaftswerte mit Datum und left join es auf die ursprüngliche Tabelle.

SELECT P.property,C.DATE 
FROM (SELECT DISTINCT PROPERTY FROM my_table) P 
CROSS JOIN @calendar C 
LEFT JOIN MY_TABLE M ON M.PROPERTY=P.PROPERTY AND M.BUSINESS_DATE=C.DATE 
WHERE M.BUSINESS_DATE IS NULL 
+0

Das ist perfekt! Vielen Dank! – zfemmer