现有一Access数据库,字段内容如下:
A(日期) B(品种) C(名称) D(...) ......
2009-5-8 pz1 m1
2009-5-8 pz1 m2
2009-5-8 pz2 n1
2009-5-8 pz2 n2
2009-5-9 pz1 m1
2009-5-9 pz1 m2
2009-5-9 pz2 n1
2009-5-9 pz2 n2
...
...日期从2000年开始至今,除了双休和节假日外每天都有数据,品种有几十个,各品种下的名称有重复的,每天每品种下的名称有一条数据,现在的数据有二十多万多。
我现在想做一个校检,检查数据的完整性,比方说数据重复、遗漏等。能提供一些思路吗?
1.数据重复,可能某天的数据重复输入。
2.数据遗漏,有可能会有某天的数据忘记输入。
3.关于双休和假期,双休能直接跳过,节假日例如春节的日期不好确定;五一前几年是7天长假,这几年是3天小假。这个,我的思路是做一个假期表,把假期确定下来,校检的时候跳过这些假期,以后的假期可以通过系统运行时手动更改。
现在麻烦的就是数据重复和遗漏,难道要每条数据都在全表里遍历一遍吗?这样用时太多。有没有什么简便的SQL语句能实现?
A(日期) B(品种) C(名称) D(...) ......
2009-5-8 pz1 m1
2009-5-8 pz1 m2
2009-5-8 pz2 n1
2009-5-8 pz2 n2
2009-5-9 pz1 m1
2009-5-9 pz1 m2
2009-5-9 pz2 n1
2009-5-9 pz2 n2
...
...日期从2000年开始至今,除了双休和节假日外每天都有数据,品种有几十个,各品种下的名称有重复的,每天每品种下的名称有一条数据,现在的数据有二十多万多。
我现在想做一个校检,检查数据的完整性,比方说数据重复、遗漏等。能提供一些思路吗?
1.数据重复,可能某天的数据重复输入。
2.数据遗漏,有可能会有某天的数据忘记输入。
3.关于双休和假期,双休能直接跳过,节假日例如春节的日期不好确定;五一前几年是7天长假,这几年是3天小假。这个,我的思路是做一个假期表,把假期确定下来,校检的时候跳过这些假期,以后的假期可以通过系统运行时手动更改。
现在麻烦的就是数据重复和遗漏,难道要每条数据都在全表里遍历一遍吗?这样用时太多。有没有什么简便的SQL语句能实现?
SELECT * FROM table1 a
WHERE EXISTS (select * from table1 b
where b.日期=a.日期
and b.品质=a.品种
and b.名称=a.名称
...)
2)遗漏
先取得有数据的日期
SELECT 日期 FROM table1
GROUP BY 日期
ORDER BY 日期
遍历这个记录集,判断前后两个日期中间缺少的日期是否不是休日。
或者你将所有的工作日加到一张日历表中,就可以直接用 SQL 查询了
SELECT * FROM 日历表 a
WHERE NOT EXISTS (SELECT * FROM table1 b
WHERE b.日期=a.日期)
能解释一下吗?翻译一下。
SELECT * FROM table1 a 这里的“a” 就是个字符“a”吗?还是指我的A字段?
WHERE EXISTS (select * from table1 b
where b.日期=a.日期
and b.品质=a.品种
and b.名称=a.名称
...)SELECT 日期 FROM table1 这句怎么理解?
GROUP BY 日期
ORDER BY 日期
select top 1 * 这样做为什么快一些?这个“1”是什么意思?
top 1是指符合条件的第一个
学编程不学数据库就像学语文不学诗歌一样。
这句话倒是挺真的,感觉写SQL语句,就像在写古诗...
select * from table1 where A=text1.text and B=text2.text and C=text3.text我是用的Flex,这里用text1作个例子,每天的数据有几百条,这样处理的话有点慢。
你想叫什么就叫什么,b,c,abc,abcd都可以。。