首页 新闻 会员 周边 捐助

sql 语句 问题。

0
[已解决问题] 解决于 2016-03-10 09:54

有这样一张表

想要如下效果:

我使用的是

 select d.DateString,COUNT(Pass) as Pass,COUNT(Fail) as Fail from 
  (select DateString
  ,case(Result) 
  when 'Pass' then 'Pass' end as Pass
  ,case(Result)
  when 'Fail' then 'Fail' end as Fail from
  (select left(Convert(nvarchar, date,21),10) as DateString ,[Result]  FROM [EFDemo].[dbo].[Result])table_tb)d
  group by d.DateString

事实上转换成字符串处理效率会比较低。各位大神,有没有一种方法 不需要转换日期的?

龙葛格的主页 龙葛格 | 小虾三级 | 园豆:782
提问于:2016-03-09 10:47
< >
分享
最佳答案
0

select datestring, count(Pass), count(Fail)

from(

  select

    convert(nvarchar, date,21) as datestring,

    case Result when 'Pass' then 'Pass' end as Pass,

    case Result when 'Fail' then 'Fail' end as Fail,    

  from 表

) a group by datestring

奖励园豆:5
Rich.T | 老鸟四级 |园豆:3440 | 2016-03-09 18:39

谢谢。

龙葛格 | 园豆:782 (小虾三级) | 2016-03-10 09:18
其他回答(3)
0

你这个效率已经很高了

刘宏玺 | 园豆:14020 (专家六级) | 2016-03-09 11:18

谢谢。

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2016-03-09 16:53
0

datename?

舟翅桐 | 园豆:675 (小虾三级) | 2016-03-09 11:49

谢谢。datename只能得到日期的一部分吧?

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2016-03-09 16:54
0

额,首先,感谢两位园友的热心回答。

经过一些思考,对上面的语句进行了一些优化。

1   select Convert(date, Date) as Date,COUNT(Pass) as Pass,COUNT(Fail) as Fail from 
2   (select Date
3   ,case(Result) 
4   when 'Pass' then 'Pass' end as Pass
5   ,case(Result)
6   when 'Fail' then 'Fail' end as Fail from [TestResult])d
7   group by Convert(date, Date)

 这样写的好处有:1,效率稍微搞一些。

2,可以直接排序,不用使用charindex

龙葛格 | 园豆:782 (小虾三级) | 2016-03-09 16:53

再次感谢 @Rich.T,将转换放在内层确实好。

支持(0) 反对(0) 龙葛格 | 园豆:782 (小虾三级) | 2016-03-10 09:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册