日期:2014-05-19  浏览次数:20424 次

如何进行这种查询。
如何进行这种查询。
-------------------
是一个车间上报产量的表,
字段结构:(只为了说明问题举出4个字段,还有别的)
员工编码,机台编码,机台班次,机台产量,工序编码,员工产量分配比例

说明,同一个机台同一个班次下,有多名员工,输入一个相同的机台产量,按分配比例算出每位员工的产量.
张二,001,白班,1000,车活,0.25
刘一,001,白班,1000,车活,0.36
王八,001,白班,999,车活,0.56

(其中,机台班次的含义是:白班,夜班,中班等)

在这个表中,机台编码+机台班次   的组合相同时,机台产量应该是一样的,工序编码应该是一样的.也就是说,同一个机台的同一个班次下,机台产量必须是相同的.是一个惟一值,工序编码也应该一致.

一.我想实现一个检验功能,如有不合法的输入应给出提示,但不知如何写代码:
即同一个机台同一个班次下,机台产量与工序编码必须一致.
比如我举的例子,王八的记录错了,产量为999,应为1000才对.
二.我想实现一个校验功能,就是同一个机台同一个班组下,分配比例之和应该为1,比如我举的例子,0.25+0.36+0.56大于1了,就是错误的.如何校验呢?




------解决方案--------------------
1.检验是否有产量及工序编码不对的.
select count(1) as 记录数 from table1
group by 机台编码+机台班次

if exists(select * from table1 a left join table1 b on (a.机台编码=b.机台编码 and a.机台班次=b.机台班次) where a.机台产量 <> b.机台产量 or a.工序编码 <> b.工序编码)
begin
print '产量或工序不一样! '
end