这段代码查出来的值怎么不对?哪里错?

wzq855507 2007-12-19 09:33:35
SELECT *,
区队安全度 = CASE
WHEN 在册人数 = 0 THEN '橙区'
WHEN 绿区人数 * 1.0 / 在册人数 > 0.95 THEN '绿区'
WHEN 绿区人数 * 1.0 / 在册人数 BETWEEN 0.95 AND 0.9 THEN '蓝区'
WHEN 绿区人数 * 1.0 / 在册人数 BETWEEN 0.85 AND 0.9 THEN '黄区'
WHEN 绿区人数 * 1.0 / 在册人数< 0.85 THEN '橙区' END
FROM
(SELECT 所在区队,班组长,
(SELECT COUNT(1) AS COUNT FROM
(SELECT 违章人,专业,所在工区班长,所在工区 FROM AZYZL1 GROUP BY 违章人,专业,所在工区,所在工区班长) c WHERE 所在工区 = wzrbb1.所在区队 and 所在工区班长=wzrbb1.班组长) AS 在册人数,
SUM(CASE WHEN 计分 <= 59 THEN 1 ELSE 0 END) + (SELECT COUNT(1)
FROM azyzl1 bbb WHERE NOT EXISTS
(SELECT 1 FROM wzrbb WHERE 违章人 = bbb.违章人) AND 所在工区班长 = wzrbb1.班组长) AS 绿区人数,
SUM(CASE WHEN 60 < 计分 AND 计分 <= 79 THEN 1 ELSE 0 END) AS 蓝区人数,
SUM(CASE WHEN 80 <= 计分 AND 计分 < 99 THEN 1 ELSE 0 END) AS 黄区人数,
SUM(CASE WHEN 计分 >= 100 THEN 1 ELSE 0 END) AS 橙区人数
FROM (SELECT 所在区队,班组长, 违章人, 计分 = SUM(计分) FROM wzrbb GROUP BY 所在区队, 班组长,违章人) AS wzrbb1 GROUP BY 所在区队,班组长) AS wzrbb2 oRDER BY 所在区队
想以AZYZL1为主表查询班组长,为什么查到的班组长和用
以下代码:SELECT 所在工区, 所在工区班长
FROM azyzl1
GROUP BY 所在工区班长, 所在工区
查出来的班组长不一样?上面代码中有的班组长没有?



...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tim_spac 2007-12-25
  • 打赏
  • 举报
回复
sorry, 一直没注意到楼主的阐述。
这里补一下:
以AZYZL1表为基表,查询姓名等信息列表,用left join 与统计结果关联。
你原先的脚本中采用的方式要求两个关联表里有对等的数据,这样,没有合计计分的AZYZL1就没在结果中出现.

select a.key, cnt = isnull(b.cnt,0), degree = isnull(b.degree,0.00)
from AZYZL1 a
left join (
select key, cnt = count(), degree = sum() ..
from wzrbb
group by key
) as b on a.key=b.key
wzq855507 2007-12-19
  • 打赏
  • 举报
回复
有两个表,wzrbb中是计分内容。AZYZL1是姓名表,想通过姓名表去WZRBB中查他的计分合计,如果WZRBB里计分里没有AZYZL1中的名字,那就默认计分为0
wzq855507 2007-12-19
  • 打赏
  • 举报
回复
有两个表,wzrbb中是计分内容。AZYZL1是姓名表,想通过姓名表去WZRBB中查他的计分合计,如果WZRBB里计分里没有AZYZL1中的名字,那就默认计分为0
tim_spac 2007-12-19
  • 打赏
  • 举报
回复
先描述一下你的表已经查询需求。
wzq855507 2007-12-19
  • 打赏
  • 举报
回复
SELECT * FROM
(SELECT 所在区队,班组长, (SELECT COUNT(1) AS COUNT FROM (SELECT 违章人,专业,所在工区班长,所在工区 FROM AZYZL1 GROUP BY 违章人,专业,所在工区,所在工区班长) c WHERE 所在工区 = wzrbb1.所在区队 and 所在工区班长=wzrbb1.班组长) AS 在册人数 FROM (SELECT 所在区队,班组长, 违章人, 计分 = SUM(计分) FROM wzrbb GROUP BY 所在区队,班组长,违章人) AS wzrbb1 GROUP BY 所在区队,班组长) AS wzrbb2 oRDER BY 所在区队


想以AZYZL1为主表查询班组长,为什么查到的班组长和用
以下代码:
SELECT 所在工区, 所在工区班长 FROM azyzl1 GROUP BY 所在工区班长, 所在工区
查出来的班组长不一样?上面代码中有的班组长没有?这样能不能看明白?
wuxinyuzhu 2007-12-19
  • 打赏
  • 举报
回复

这是什么东东啊 看得好晕

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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