2014-10-11 68 views
0

我有一个SQL查询在执行时给出了一个错误SQL查询具有多个选择的排序错误

文本,ntext和图像数据类型不能比较或排序,当使用IS NULL或LIKE操作除。

查询是

SELECT Count(*)        AS present, 
     (SELECT Count(counted) 
     FROM (SELECT attdate AS counted 
       FROM gtab85 
       WHERE attdate >= '01/10/2014' 
         AND attdate <= '11/10/2014' 
       GROUP BY attdate) AS derived) AS working, 
     gtab86.staffname 
FROM gtab85 AS A 
     INNER JOIN gtab86 
       ON gtab86.staffid = A.userid 
WHERE attdate >= '01/10/2014' 
     AND attdate <= '11/10/2014' 
GROUP BY userid, 
      staffname 

当我执行以下部分

SELECT Count(*)        AS present, 
     (SELECT Count(counted) 
     FROM (SELECT attdate AS counted 
       FROM gtab85 
       WHERE attdate >= '01/10/2014' 
         AND attdate <= '11/10/2014' 
       GROUP BY attdate) AS derived) AS working 

我以未排序的方式得到结果。请帮助我解决此问题。

+0

显然'staffname'是一个文本或ntext列。如果您希望它在group by子句中使用,则可以将其转换为varchar。比较... – 2014-10-11 05:27:37

回答

0

尝试将文本转换为VARCHAR:

select count(*) as present, 
     (select count(counted) 
     from (select attdate as counted 
       from gtab85 
       where attdate >='01/10/2014' and attdate <='11/10/2014' group by attdate 
      ) as derived 
     ) as working, 
     convert(varchar(255),gtab86.staffname) 
from gtab85 as A 
inner join gtab86 
on gtab86.staffid=A.userid 
where attdate >='01/10/2014' and attdate <='11/10/2014' 
group by userid,convert(varchar(255),gtab86.staffname) 
+0

...确实有效.... – a4akhil 2014-10-11 05:40:08