select first name
,last name
,employeeID
,CASE
WHEN CONVERT(xml,detail).value('count(//education/item)','nvarchar(50)')=0 AND
CONVERT(xml,detail).value('(//preventive/itemValue/text())[1]','nvarchar(50)') LIKE '%Employee refuses to participate %' THEN
'AAA-1'
WHEN CONVERT(xml,detail).value('count(//education/item)','nvarchar(50)') =0 AND
CONVERT(xml,detail).value('count(//preventive/itemValue)','nvarchar(50)')=0 THEN
'AAA-2'
ELSE
'AAA-3'
END val
,Start Date
,End Date
FROM (HAS MULTIPLE JOINS HERE & CONDITION )
GROUP BY first name
,last name
,employeeID
,CASE
WHEN CONVERT(xml,detail).value('count(//education/item)','nvarchar(50)')=0 AND
CONVERT(xml,detail).value('(//preventive/itemValue/text())[1]','nvarchar(50)') LIKE '%Employee refuses to participate %' THEN
'AAA-1'
WHEN CONVERT(xml,detail).value('count(//education/item)','nvarchar(50)') =0 AND
CONVERT(xml,detail).value('count(//preventive/itemValue)','nvarchar(50)')=0 THEN
'AAA-2'
ELSE
'AAA-3'
END
,Start Date
,End Date
Мой код выполняется отлично, но когда я пишу выражение group by, он выдает ошибку, говорящую о том, что тип данных XML не может быть сгруппирован. Я знаю, что мы можем сделать это с помощью определенной пользователем функции. Может кто-нибудь, пожалуйста, дайте мне знать, как эта задача может быть достигнута. Мне нужно сгруппировать по пунктам в моем коде. Я использую SQL Server 2005/2008.