1

実行中にSQLサーバーエラー「the text ntext and image data types cannot be comparison or sorted without when using is null or like」が表示されます

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

何が問題なのかわからない。形式のために集計関数も使用しましたが、機能していません。

4

1 に答える 1

2

あなたのr.Shift列はtextorntext型だと思います。このため、group by

疑わしい列で CAST を使用することも 1 つのオプションですが、データが失われる可能性があります。例:

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クエリしてから、欠落している列を取得するために 2 番目のクエリを実行することもできます。例:

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
于 2012-09-17T20:18:55.247 に答える