【问题标题】:Sql Query With Multiple Select's Sorting Error带有多选排序错误的 Sql 查询
【发布时间】:2014-12-06 07:44:09
【问题描述】:

我有一个 sql 查询,执行时出错

"text、ntext 和 image 数据类型不能进行比较或排序,除非使用 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 

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

【问题讨论】:

  • 显然 staffname 是一个 text 或 ntext 列。如果希望在 group by 子句中使用,可以将其转换为 varchar。

标签: sql-server-2008


【解决方案1】:

尝试将文本转换为 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 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多