Bạn cần biểu thức trả về "Fall_2009" hoặc "Spring_2009", sau đó nhóm trên biểu thức đó. ví dụ:
-- identify each pattern individually w/ a case statement
SELECT
CASE
WHEN column_x LIKE '%Fall[_]2009' THEN 'Fall 2009'
WHEN column_x LIKE '%Spring[_]2009' THEN 'Spring 2009'
END AS group_by_value
, COUNT(*) AS group_by_count
FROM Table1 a
GROUP BY
CASE
WHEN column_x LIKE '%Fall[_]2009' THEN 'Fall 2009'
WHEN column_x LIKE '%Spring[_]2009' THEN 'Spring 2009'
END
hoặc
-- strip all characters up to the first space or dash
SELECT
STUFF(column_x,1,PATINDEX('%[- ]%',column_x),'') AS group_by_value
, COUNT(*) as group_by_count
FROM Table1 a
GROUP BY
STUFF(column_x,1,PATINDEX('%[- ]%',column_x),'')
hoặc
-- join to a (pseudo) table of pattern masks
SELECT b.Label, COUNT(*)
FROM Table1 a
JOIN (
SELECT '%Fall[_]2009' , 'Fall, 2009' UNION ALL
SELECT '%Spring[_]2009', 'Spring, 2009'
) b (Mask, Label) ON a.column_x LIKE b.Mask
GROUP BY b.Label
Nguồn
2009-10-30 03:25:06
Tôi không hiểu bạn muốn làm gì. Nếu cũng có một hàng với "HIST Spring_2009", kết quả mong đợi là gì? – Cellfish
@Cellfish: Tôi tin rằng những gì mà người đăng muốn muốn là trích xuất từ trường ra khỏi cột và nhóm không chuẩn hóa trong học kỳ, ném ra phần tên khóa học của văn bản. –