表1:
name 检查 问题 解决 考核 日期
张三 一 低得多 true true 2-8
张三 地方 无 flase flase 2-15
李四 东方 淀粉 flase true 2-18
张三 健康 大丰收 true flase 3-5统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2
李四 2要求:更新统计表如下统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2 1 1 1 2
李四 1 1 0 1 2
name 检查 问题 解决 考核 日期
张三 一 低得多 true true 2-8
张三 地方 无 flase flase 2-15
李四 东方 淀粉 flase true 2-18
张三 健康 大丰收 true flase 3-5统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2
李四 2要求:更新统计表如下统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2 1 1 1 2
李四 1 1 0 1 2
UPDATE jx_jcxs
SET sj_checks =
(SELECT COUNT(id) AS Expr1
FROM jx_scene AS s
WHERE (jc_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) - 1) AND
(userid = jx_jcxs.userid)),
sj_problems =
(SELECT SUM(CASE isnull(question, '') WHEN '' THEN 0 ELSE 1 END) AS q
FROM jx_scene AS s
WHERE (jc_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) - 1) AND
(userid = jx_jcxs.userid)),
sj_fashu =
(SELECT SUM(CASE fashu WHEN 1 THEN 1 ELSE 0 END) AS Expr1
FROM jx_scene AS s
WHERE (jc_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) - 1) AND
(userid = jx_jcxs.userid)),
sj_jiejue =
(SELECT SUM(CASE jiejue WHEN 1 THEN 1 ELSE 0 END) AS Expr1
FROM jx_scene AS s
WHERE (jc_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) - 1) AND
(userid = jx_jcxs.userid)),
sj_kaohe =
(SELECT SUM(CASE kaohe WHEN 1 THEN 1 ELSE 0 END) AS Expr1
FROM jx_scene AS s
WHERE (jc_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0) AND DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) - 1) AND
(userid = jx_jcxs.userid))
WHERE (pdmonth = DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0))可以改写简洁些吗?
检查 = count(*),
问题个数 = count(*) - (select count(*) from 表1 and 解决 = 'true' and name = t.name) ,
解决 = (select count(*) from 表1 and 解决 = 'true' and name = t.name),
考核 = (select count(*) from 表1 and 考核 = 'true' and name = t.name),
月份 = (select count(distinct (left(日期,charindex('-',日期)-1)) ) from 表1 where name = t.name)
from 表1 t
name 检查 问题 解决 考核 日期
张三 一 低得多 true true 2-8
张三 地方 无 flase flase 2-15
李四 东方 淀粉 flase true 2-18
张三 健康 大丰收 true flase 3-5 统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2月
李四 2 月要求:更新统计表如下 统计表:
name 检查次数 问题个数 解决数 考核数 月份
张三 2 1 1 1 2 月
李四 1 1 0 1 2月