【发布时间】:2017-06-30 15:29:45
【问题描述】:
我原来在sql上有如下查询:
SELECT PROJECT_TYPE.PROJECT_TYPE_NAME, PROJECT.PROJECT_NAME, STATUS_TYPE.STATUS_TYPE_NAME,
COUNT(*) AS Tasks
FROM TASK
INNER JOIN PROJECT ON PROJECT.PROJECT_ID = TASK.PROJECT_ID
AND PROJECT.POURCENTAGE < 100 /* the following ANDs filters out inactive projects */
AND PROJECT.PROJECT_TYPE < 6
AND PROJECT.PROJECT_STATUS_ID < 3
INNER JOIN PROJECT_TYPE ON PROJECT.PROJECT_TYPE = PROJECT_TYPE.PROJECT_TYPE_ID
INNER JOIN STATUS_TYPE ON TASK.STATUS_TYPE_ID = STATUS_TYPE.STATUS_TYPE_ID
INNER JOIN PRIORITY_TYPE ON TASK.PRIORITY_TYPE_ID = PRIORITY_TYPE.PRIORITY_TYPE_ID
AND NOT PRIORITY_TYPE.PRIORITY_TYPE_NAME = 'Hold'
AND STATUS_TYPE.STATUS_TYPE_NAME IN ('To do','In Progress', 'To Verify') /* only include projects in these 3 statuses */
GROUP BY PROJECT_TYPE.PROJECT_TYPE_NAME, PROJECT.PROJECT_NAME, STATUS_TYPE.STATUS_TYPE_NAME
order by 2, case status_type_name /* orders by status */
when 'To do' then 1
when 'In Progress' then 2
when 'To Verify' then 3
else 4
end
它正确地将特定状态下的任务数显示为such。但是,我想替换
project.project_name
在另一个名为
的表中列出了较短描述的表project.project_desc
,看起来像this。我尝试通过将所有 project.project_name 替换为 project.project_desc 并添加
来实现这一点AND PROJECT.PROJECT_DESC IS NOT NULL
第一个inner join下。但是,这会导致以下错误
SQL 错误 (306):text、ntext 和 image 数据类型不能 比较或排序,除非使用 IS NULL 或 LIKE 运算符。
我现在不确定这有什么问题,所有的空值都应该被过滤掉,所以我很困惑为什么查询不像以前那样运行,只是读取不同的表.我无权编辑数据库,所以这些更改必须通过查询来实现。
【问题讨论】:
-
更新您的问题并添加您的表格架构.. 需要知道列数据类型。
-
这不是 MySQL 错误,而是 SQL-Server。见stackoverflow.com/questions/14979413/…
-
对不起,project_name 是 nvarchar,project_desc 是 ntext。
-
@user8093091 如果您希望能够进行此比较,您需要将
project_desc更改为VARCHAR。
标签: sql-server