如何写SQL语句,江湖!!!! 本帖最后由 celery916 于 2011-12-08 12:43:13 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 合格率=ltrim(cast(SUM(CASE WHEN TaskStatusId=3 THEN 1 ELSE 0 END)/COUNT(TaskId) as dec(18,2)))+'%' ------------------------------------------------------------------ Author :fredrickhu(小F,向高手学习)-- Date :2011-12-08 14:37:57-- Version:-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86) -- Apr 22 2011 11:57:00 -- Copyright (c) Microsoft Corporation-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)--------------------------------------------------------------------> 测试数据:[tb]if object_id('[tb]') is not null drop table [tb]go create table [tb]([任务执行人] int,[分配任务数] int,[完成任务数] int,[合格任务数] int,[合格率] varchar(100))insert [tb]select 1,6,1,null,null union allselect 2,8,5,null,null union allselect 3,5,2,null,null union allselect 4,5,0,null,null union allselect 5,1,0,null,null union allselect 6,1,0,null,null--------------开始查询--------------------------select *, 合格率=LTRIM(cast(完成任务数*100.0/分配任务数 as DEC(18,2)))+'%' from [tb]----------------结果----------------------------/* 任务执行人 分配任务数 完成任务数 合格任务数 合格率 合格率----------- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------- ------------------------------------------1 6 1 NULL NULL 16.67%2 8 5 NULL NULL 62.50%3 5 2 NULL NULL 40.00%4 5 0 NULL NULL 0.00%5 1 0 NULL NULL 0.00%6 1 0 NULL NULL 0.00%(6 行受影响)*/少乘以了100.0 谢谢!那任务的合格任务数该怎么用SQL语句写呢???貌似要用多表连接啊??还是合格任务数 貌似要统计任务检查表里面的select TaskId,SUM(CASE WHEN CheckResult='合格' THEN 1 ELSE 0 END) AS 合格任务数我只会统计每个任务的合格数,并不会统计每个人每个任务的合格任务数???也就是如何实现下面的表呢任务执行人 分配任务数 完成任务数 合格任务数 ?(不会) 合格率?(不会) 数据库问题,看以前的帖子发现的 难题,请教高手 求一条SQL语句,恢复数据库时,断开所有连接 高手看过来,如何取一行数据中的部分数据 请问having语句是不是一定要有group by语句才能使用? Sqlserver中varchar字段容量问题 好郁闷的问题 关于视图的使用 同一服务器,不同数据库某几个表同步请教! 设计表的字段问题 如何将结果转换为列名查询出来 求一条经典SQL语句
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-12-08 14:37:57
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([任务执行人] int,[分配任务数] int,[完成任务数] int,[合格任务数] int,[合格率] varchar(100))
insert [tb]
select 1,6,1,null,null union all
select 2,8,5,null,null union all
select 3,5,2,null,null union all
select 4,5,0,null,null union all
select 5,1,0,null,null union all
select 6,1,0,null,null
--------------开始查询--------------------------
select
*,
合格率=LTRIM(cast(完成任务数*100.0/分配任务数 as DEC(18,2)))+'%'
from [tb]
----------------结果----------------------------
/* 任务执行人 分配任务数 完成任务数 合格任务数 合格率 合格率
----------- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------- ------------------------------------------
1 6 1 NULL NULL 16.67%
2 8 5 NULL NULL 62.50%
3 5 2 NULL NULL 40.00%
4 5 0 NULL NULL 0.00%
5 1 0 NULL NULL 0.00%
6 1 0 NULL NULL 0.00%(6 行受影响)
*/少乘以了100.0
合格任务数 貌似要统计任务检查表里面的select TaskId,SUM(CASE WHEN CheckResult='合格' THEN 1 ELSE 0 END) AS 合格任务数
我只会统计每个任务的合格数,并不会统计每个人每个任务的合格任务数???
也就是如何实现下面的表呢
任务执行人 分配任务数 完成任务数 合格任务数 ?(不会) 合格率?(不会)