当前位置: 代码迷 >> Sql Server >> 代码优化 获取一个值和数量
  详细解决方案

代码优化 获取一个值和数量

热度:34   发布时间:2016-04-24 09:13:44.0
求助代码优化 获取一个值和数量
SELECT COUNT(DISTINCT sno) AS scnt , 
               CASE WHEN scnt = 1 THEN (SELECT DISTINCT sno FROM sinfo) ELSE '' END AS sno
  FROM (SELECT COUNT(DISTINCT sno) AS scnt FROM sinfo) AS T1


这个是我现在想到的代码 
要求是 :
遍历一个表 看里面有几种sno ;
如果sno只有1中 则返回那个sno的值;
如果有多种sno 则返回空值 并告知有几个sno数量;

返回的行数要求是1行

因为现在是用了两个distinct 在老旧的数据库上的速度很差
需要尽可能的提升速度问题;
膜拜大神!!!
------解决思路----------------------
SELECT scnt , 
       CASE WHEN scnt = 1 THEN  sno ELSE '' END AS sno
  FROM (SELECT COUNT(DISTINCT sno) AS scnt,
               MAX(sno) AS sno
          FROM sinfo
       ) AS T1
  相关解决方案