Подстановочные знаки в SQL с аналогичными подстановочными знаками - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 3 категории:

  1. Happy
  2. Sad
  3. Happy + Sad
Id  Code
 1  03FJ
 1  03JO
 3  03PR
 4  03OY
 4  036X
 4. 03JX

Когда код как "% 03J", но не имеет других значений "% 03", тогда он счастлив. Когда код похож на "% 03", но не имеет значений "% 03J", это печально. Когда код похож на '% 03' и имеет другие значения '% 03J', тогда он счастлив + печален

Предполагаемый результат выше будет

Id Emotion
1  Happy
3  Sad
4. Happy + Sad

Как я могу это сделать ? Я не уверен, как это записать, если подстановочные знаки практически такие же.

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете использовать агрегирование. Самые последние версии SQL Server поддерживают concat_ws():

select id,
       concat_ws(' + ',
                 (case when sum(case when code like '%03%J%' then 1 else 0 end) > 0
                       then 'Happy'
                  end),
                 (case when sum(case when code not like '%03%J%' then 1 else 0 end) > 0
                       then 'Sad'
                  end)
                 ) as emotion
from t
group by id;

Вы можете сделать что-то подобное в более старых версиях SQL Server, используя case выражения или другие методы.

...