Gợi ý để có thể Select ... Group By ... Having ... với column chứa dữ liệu xml có độ dài lớn hơn 8000

Là new member có gì thiếu sót xin mọi người giúp đỡ.

Em dùng lệnh SQL kiểu như sau:

Select column1, column2, column3, cast( "column_xml" as NVARCHAR(MAX))
From table_name
Group by column1, column2, column3, cast( "column_xml" as NVARCHAR(MAX))
Having column3 = MAX(column3);

Nếu bỏ cast( “column_xml” as NVARCHAR(MAX)) thì run OK, nếu có thì nó có thông báo sau:

00910. 00000 -  "specified length too long for its datatype
*Cause:    for datatypes CHAR and RAW, the length specified was > 2000;
           otherwise, the length specified was > 4000.
*Action:   use a shorter length or switch to a datatype permitting a
           longer length such as a VARCHAR2, LONG CHAR, or LONG RAW

Sau khi kiểm tra size của colum đó mọi row đề lớn hơn 8000. Vậy làm sao có thể chuyển sang dạng ký tự để có thể dùng group by … having.?

Em tìm trên mạng nhiều ngày và thử dùng VARCHAR2 và mọi cách tìm được vẫn chưa khắc phục được lỗi trên (không chuyển được định dạng xml có size vượt quá 8000 sang định dạng ký tự để có thể dùng group by… having…).

Mong mọi người gợi ý.

Bạn có thể cho mình data lỗi của bạn để mình test thử được không?

Cảm ơn bạn đã quan tâm!

Mình tìm và có cách khắc phục nhưng tốc độ nó không được nhanh lắm, câu lệnh như sau:

Select column1, column2, column3, column_xml
From table_name
Where in
( Select column1, column2, MAX(column3) as column3
From table_name)

Hiện mình vẫn đang muốn cải tiến tốc độ và đang tìm cách.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?