2012-09-17 49 views
1

我收到SQL Server錯誤「一文ntext和image數據類型不能比較或排序,但使用時爲空或像」在執行錯誤而使用GROUP BY子句

SELECT r.Shift, l.lab_title AS [Assigned Lab], u.user_name AS [L/A], 
     CONVERT(varchar(100), t.Time) + ' To ' + CONVERT(varchar(100), h.Time) AS Timing 
    FROM table_roaster_time_table AS r 
     INNER JOIN table_time AS t ON r.timeId = t.timeId AND r.timeId = t.timeId 
     INNER JOIN table_user AS u ON r.user_id = u.user_id 
     INNER JOIN table_labs AS l ON r.lab_id = l.lab_id 
     INNER JOIN table_time2 AS h ON r.timeId2 = h.timeId2 
GROUP BY r.Shift, l.lab_title, u.user_name 

不要知道什麼是問題。我也使用聚合函數,只是爲了形式化,但它不起作用。

回答

2

我猜你的r.Shift列是textntext類型。因此,它不能用於group by

一個選項可能是在可疑列上使用CAST,但可能會丟失數據。例如:

SELECT  r.Shift, l.lab_title AS [Assigned Lab], u.user_name AS [L/A], CONVERT(varchar(100),  t.Time) + ' To ' + CONVERT(varchar(100), h.Time) AS Timing 
FROM   table_roaster_time_table AS r INNER JOIN 
        table_time AS t ON r.timeId = t.timeId AND r.timeId = t.timeId INNER JOIN 
        table_user AS u ON r.user_id = u.user_id INNER JOIN 
        table_labs AS l ON r.lab_id = l.lab_id INNER JOIN 
        table_time2 AS h ON r.timeId2 = h.timeId2 
GROUP BY CAST(r.Shift as varchar(max), l.lab_title, u.user_name 

你也可以看看查詢數據,而不text列,然後做第二查詢來獲取缺少的列。例如:

with temp as 
(
    SELECT  l.lab_title AS [Assigned Lab], u.user_name AS [L/A], CONVERT(varchar(100),  t.Time) + ' To ' + CONVERT(varchar(100), h.Time) AS Timing 
    FROM   table_roaster_time_table AS r INNER JOIN 
         table_time AS t ON r.timeId = t.timeId AND r.timeId = t.timeId INNER JOIN 
         table_user AS u ON r.user_id = u.user_id INNER JOIN 
         table_labs AS l ON r.lab_id = l.lab_id INNER JOIN 
         table_time2 AS h ON r.timeId2 = h.timeId2 
    GROUP BY l.lab_title, u.user_name 
) 
SELECT r.Shift, t.lab_title AS [Assigned Lab], t.user_name AS [L/A] --etc 
FROM   table_roaster_time_table AS r 
INNER JOIN temp as t 
on r.id = t.id --or whatver 

此外,該SQL似乎沒有必要:

r.timeId = t.timeId AND r.timeId = t.timeId 
+0

我應該改變我這是在其使用,並具有文本作爲一種數據類型的所有列? – IConfused

+0

更清楚地表明,假設以id結尾的變量是整數,GROUP BY子句中的一列是其中一種無法比較的類型。 – xception

+0

我不確定如果你需要它,我會改變它。有些選項可能會將其轉換爲varchar(max),或者可能會執行兩個單獨的查詢,第一個分組不包括'ntext'列,第二次加入原始查詢以獲取ntext列... –