当前位置: 代码迷 >> Sql Server >> 求教大神,该怎么处理
  详细解决方案

求教大神,该怎么处理

热度:27   发布时间:2016-04-24 10:00:15.0
求教大神
我有个查询语句
select a.UserName,
MAX(case  when CONVERT(varchar(50),c.AttTime,8) between z.amstart and z.amend then '正常' when  CONVERT(varchar(50),c.AttTime,8) between z.amlate and z.amlated then '迟到' else '未签到' end)as 上午上班
from zhiduiTime as z,UserInfo as a left join usergx as b on a.PIN=b.userid
left join att_record as c on a.PIN=c.EnrollNumber and CONVERT(varchar(50),c.AttTime,23)='2014-09-15'
where b.partoid=1
group by a.UserName

得出的结果:


但如果我将 '正常' 换成图片地址 ‘~/images/tb1.png ’

得到的结果却是:


这是为什么呢??
------解决思路----------------------
select a.UserName,
MAX(case  when CONVERT(varchar(50),c.AttTime,8) between z.amstart and z.amend then  ‘~/images/tb1.png ’ when  CONVERT(varchar(50),c.AttTime,8) between z.amlate and z.amlated then '迟到' else '未签到' end)as 上午上班
from zhiduiTime as z,UserInfo as a left join usergx as b on a.PIN=b.userid
left join att_record as c on a.PIN=c.EnrollNumber and CONVERT(varchar(50),c.AttTime,23)='2014-09-15'
where b.partoid=1
group by a.UserName

你是说这样之后变成了第二个图的样子?
------解决思路----------------------
  SELECT a.username,
         -- 格式化一下
         -- 这是在 '正常','迟到','未签到' 中求 MAX(),什么逻辑?
         MAX(CASE 
               WHEN CONVERT(VARCHAR(50),c.atttime,8) BETWEEN z.amstart AND z.amend THEN '正常'
               WHEN CONVERT(VARCHAR(50),c.atttime,8) BETWEEN z.amlate AND z.amlated THEN '迟到'
               ELSE '未签到'
             END) AS 上午上班
    FROM zhiduitime AS z,
         userinfo AS a
         LEFT JOIN usergx AS b
           ON a.pin = b.userid
         LEFT JOIN att_record AS c
           ON a.pin = c.enrollnumber
              AND CONVERT(VARCHAR(50),c.atttime,23) = '2014-09-15'
   WHERE b.partoid = 1
GROUP BY a.username

--合理的逻辑应该是下面这样,那样你怎么改文本都没关系了。
         CASE 
           WHEN CONVERT(VARCHAR(50),MAX(c.atttime),8) BETWEEN z.amstart AND z.amend THEN '正常'
           WHEN CONVERT(VARCHAR(50),MAX(c.atttime),8) BETWEEN z.amlate AND z.amlated THEN '迟到'
           ELSE '未签到'
         END AS 上午上班
  相关解决方案