2014-01-11 1 views
0

мне нужно работать на старой плохо базе дизайнаповорачиваясь из разделенных запятыми значения столбца в SQL сервере

имеет таблицу, как показано ниже

CREATE TABLE answers (ID INT, ans NVARCHAR(300)) 
INSERT INTO answers VALUES 
(1,'a,b,a,c,d,b,x,x,y'), 
(2,'b,b,a,c,d,d,x,x,y'), 
(3, 'p,q,r,s,p,q') 

мне нужно иметь результат, как показано ниже

id a b c d e 
1 2 2 1 1 0 

Какой может быть лучший способ?

столбцы от а до г

+1

вы не делаете это в sql. UGLY должен принимать значение одного поля и разбиваться на реальные новые поля, особенно когда число «новых» полей является произвольным и варьируется. Подсуньте поле ans в ваше клиентское приложение и разделите его. –

ответ

2

Вы должны рассчитывать конкретные буквы на каждой строке. Это возможно:

select id, 
     (len(ans) - len(replace(ans, 'a', ''))) as a, 
     (len(ans) - len(replace(ans, 'b', ''))) as b, 
     (len(ans) - len(replace(ans, 'c', ''))) as c, 
     (len(ans) - len(replace(ans, 'd', ''))) as d, 
     (len(ans) - len(replace(ans, 'e', ''))) as e 
from answers; 

Количество рассчитывается на основе длины ans колонны, а затем вычитания длины, когда каждая буква удаляется.

+1

ВЫ КОЛИЧЕСТВО SQL, ХАТСОФФ К ВАМ – sumit

Смежные вопросы