求一SQL存储过程

XiaoYang_1314 2009-09-03 03:13:39
表名workFlow
文件名 工号1 错误件数1 工号2 错误件数2 总件数 时间
fileName id1 errCount1 id2 errCount2 allCount createTime
CGD651 602 0 226 5 25 2009/08/27 14:57:13
CGD670 602 1 209 5 25 2009/08/27 14:57:13
CGD732 602 4 332 3 25 2009/08/27 14:57:13
KDW2 412 0 602 0 100 2009/08/27 14:57:13
LGG76 204 4 602 6 15 2009/08/27 14:57:13
有四个查询条件:类型(文件名fileName的前两位。如:CG,KD,LG),时间(createTime),科别(工号id1的第一个数字,如:6代表六科)工号。
四个查询条件都为null时或是以时间查询时
要求得出以下结果(错误率是:错误件数/错误数 小数点后保留2位 以百分比的形式显示)
文件名 工号 总件数 错误件数 错误率
CG&KD&LG 602 190 11 6%
以类型查询时要得到以下结果
文件名 工号 总件数 错误件数 错误率
CG 602 75 5 6%
以工号为查询条件时
文件名 工号 总件数 错误件数 错误率
CG 602 75 5 6%
KD 602 100 0 0%
LG 602 15 6 4%
以类型和工号查询时
文件名 工号 总件数 错误件数 错误率
CGD651 602 25 0 0%
CGD670 602 25 1 4%
CGD732 602 25 4 16%




...全文
162 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
谢谢!
huangqing_80 2009-09-03
  • 打赏
  • 举报
回复
帮顶了
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
唉~,好可怜啊,没人里。大侠都在哪里。
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
怎么没人理我啊,哪位大侠帮忙把第一种情况写出来就好了,唉~,退而求其次啦。
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
就是不想一个一个的,想写一个公共方法,调用一下就好了。
aoyihuashao 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiaoyang_1314 的回复:]
条件是在页面中的,我写的那个就没加条件的,条件是从页面传过去的
有四个查询条件:类型(文件名fileName的前两位。如:CG,KD,LG),时间(createTime),科别(工号id1的第一个数字,如:6代表六科)工号。
[/Quote]

这样你没必要用一个语句解决问题的。

页面传过来的时候判断下是什么条件,不同的条件用不同的语句,就OK了。
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
条件是在页面中的,我写的那个就没加条件的,条件是从页面传过去的
有四个查询条件:类型(文件名fileName的前两位。如:CG,KD,LG),时间(createTime),科别(工号id1的第一个数字,如:6代表六科)工号。
aoyihuashao 2009-09-03
  • 打赏
  • 举报
回复
以工号为查询条件时
文件名 工号 总件数 错误件数 错误率
CG 602 75 5 6%
KD 602 100 0 0%
LG 602 15 6 4%


这些结果貌似跟你给的条件不相符。
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
哪位大侠帮帮忙啊,实在想不出来了,搞了一天了。
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
select tb.f as 文件名,tb.id1 as 工号,sum(tb.c) as 总件数,sum(tb.a) as 错误件数, cast(cast(sum(tb.a) as float)/sum(tb.c)*100 as decimal(10,2)) as 错误率 from(
select substring(fileName,1,2) as f,id1,sum(allCount)as c,sum(errCount1) as a from workFlow group by id1,fileName
union
select substring(fileName,1,2) as f,id2,sum(allCount)as c,sum(errCount2) as a from workFlow group by id2,fileName
) tb group by id1,tb.f
这段我写的代码只能查出第三种情况的,我要的是四个查询条件随便选那个或哪几个都能查出我要的那几种结果的SQL语句。
华夏小卒 2009-09-03
  • 打赏
  • 举报
回复
不是很懂,不知道结果怎么查出来的
XiaoYang_1314 2009-09-03
  • 打赏
  • 举报
回复
能不能帮忙写一个例子,谢谢
soft_wsx 2009-09-03
  • 打赏
  • 举报
回复
用CASE WHEN
华夏小卒 2009-09-03
  • 打赏
  • 举报
回复
太烦

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧