[英]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.