Мне нужен запрос для классификации каждой записи из таблицы на основе заданного описания. Например, если описание содержит «CABL», классификация будет «Cable», если она содержит «SLEV», то будет «Slev», если она содержит «TERM», тогда будет «Terminal», если она содержит «MULTI» затем будет «Мультикондуктор» и так далее со многими другими классификациями.
Работает так:
DESCRIPTION: CABL 150C TXL 0.500 BLU LT XLPE THIN
CLASSIFICATION: Cable
DESCRIPTION: SLEV ID=0.24 OD=0.34 L=1.04 CLR
CLASSIFICATION: Slev
DESCRIPTION: TERM 6 F 6.3 DFK AG
CLASSIFICATION: Terminal
DESCRIPTION: CABL 0.500 BLK MULTICONDUCTOR
CLASSIFICATION: Multiconductor
Как видите, проблема начинается, когда в описании содержится более одного «ключевого слова»; в четвертом примере в описании есть два ключевых слова («CABL» и «MULTI»), но правильной классификацией является «Multiconductor».
Я работаю над запросом с использованием CASE, и он выглядит так:
CASE
WHEN Descrip LIKE 'CABL%'
AND Descrip NOT LIKE '%MULTI%'
AND Descrip NOT LIKE '%SLEV%'
THEN 'CABLE'
WHEN Descrip LIKE '%SEAL%'
AND Descrip NOT LIKE '%CONN%'
AND Descrip NOT LIKE '%LOCK%'
AND Descrip NOT LIKE '%TERM%'
THEN 'SEAL'
END AS Commodity
Запрос будет работать, но он будет большим, и я подумывал об использовании LEFT / RIGHT / INNER JOIN для выбора всех классификаций, а затем их разделения, проблема в том, что мне нужно каждый раз составлять предложение SELECT Мне это понадобится, поэтому мне было интересно, есть ли форма для того, чтобы поместить SELECT «внутри» переменной и выполнять только объединения, используя их.
SELECT * FROM Table WHERE Descrip LIKE 'CABL%' AS cable_selection
SELECT * FROM Table WHERE Descrip LIKE '%MULTI%' AS multi_selection
Это просто то, о чем я думаю, если вы знаете другой способ сделать это, это тоже поможет.
Спасибо за вашу помощь.