简体   繁体   English

检查SQL中是否缺少数据

[英]Checking for missing data in SQL

I am having a hard time with this not knowing if there's a solution for this. 我很难知道这是否有解决方案。

I am trying to detect missing hourly data. 我试图检测丢失的每小时数据。 Sample: 样品:

Table HRLY_DATA: 表HRLY_DATA:

NAME          HOUR
Me            0
Me            1
Me            2
Me            3
Me            6
Me            7
You           0
You           1
You           2
You           3
You           4
You           5
You           6
You           7

As you can see, [HOUR] data of Me is missing 4 and 5. I want a query that will output: 如您所见,Me的[HOUR]数据缺少4和5.我想要一个输出的查询:

NAME          HOUR
Me            4
Me            5

For now, here's what I've got: 现在,这就是我所拥有的:

SELECT d.NAME, HR FROM HRs c
LEFT OUTER JOIN
   (
   SELECT distinct a.NAME
   FROM HRLY_DATA a
   INNER JOIN
      (
      SELECT NAME FROM
         (
         SELECT NAME, count(*) as CNT
         FROM
            (
            SELECT DISTINCT NAME, HOUR
            FROM HRLY_DATA
            ) as i
         GROUP BY NAME
         ) as ii
      WHERE CNT < 8
      ) as b
   ON a.NAME=b.NAME
   ) as d
ON c.HR=d.HOUR
WHERE d.HOUR IS NULL

HRs 的HR

HR
0
1
2
3
4
5
6
7

I am getting this output: 我得到这个输出:

NAME          HR
NULL          4
NULL          5

Data for HOUR will range only from 0 - 7.. HOUR的数据范围仅为0 - 7 ..

BTW, I am using SQL SERVER/ MSSQL for this. 顺便说一下,我正在使用SQL SERVER / MSSQL。

:( :(

Sorry if I can't explain my problem clearly. 对不起,如果我无法清楚地解释我的问题。 :( :(

Please try: 请试试:

select 
    distinct x.NAME, number HOUR
From 
    master.dbo.spt_values cross join HRLY_DATA x
where number between 0 and 7
except
select NAME, HOUR FROM HRLY_DATA

Since table HR contains data 0-7, try: 由于表HR包含数据0-7,请尝试:

select 
    distinct NAME, HR
From 
    @HR cross join HRLY_DATA 
except
select * from HRLY_DATA 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM