Mithi Ravi Ответов: 3

Пожалуйста, предложите SQL-запрос для этого сценария


"У меня есть поле (D1) как 101, 102, 103 в таблице базы данных: mastersupport. Если есть запрос - выберите right(D1,R) из mastersupport, он даст мне результат - 1, 2, 3. Но мое требование заключается в том, что я хочу показать результат как
А, В, С вместо 1,2,3".

Пожалуйста, предложите запрос, чтобы получить результат в виде A, B, C.

Что я уже пробовал:

Я попытался сделать это ниже, но получил синтаксическую ошибку.

Выберите distinct replace(replace((RIGHT(D1,1)), '1' , ‘A’), '2', ‘B’, ) как ExtractString из master_support;

3 Ответов

Рейтинг:
27

CHill60

Вы можете использовать значения для присоединения к вашим результатам
е.г

SELECT m.*,t1.col2
FROM (VALUES (1,'A') , (2,'B') , (3,'C')) 
t1 (col1, col2)
Join master_support m on right(m.D1,1)=t1.col1

Предостережение - я только что набрал это на своем телефоне, так что оно непроверено и может иметь ttypos, но я надеюсь, что вы поняли идею


Mithi Ravi

Спасибо. Проверим этот запрос.

Рейтинг:
16

thomaseo

Первое решение хорошее - альтернативное

SELECT 
CASE RIGHT(D1,1) 
	WHEN '1' THEN 'A'
	WHEN '2' THEN 'B'
	WHEN '3' THEN 'C'
END AS ExtractString
FROM master_support


CHill60

Это очень хорошо работает для небольшого числа замен, но может стать немного многословным или трудным для чтения, если вам придется делать их много. Однако хорошее решение

Mithi Ravi

- Привет, спасибо. В этом сценарии будет 10 замен. Поэтому я считаю, что этот запрос будет хорошо работать. Проверим и увидим.

thomaseo

Возможно, вы захотите рассмотреть значение ELSE, если оно не найдено -

ВЫБИРАТЬ
Корпус справа(D1,1)
КОГДА "1", ТО "А"
КОГДА "2", ТО "Б"
КОГДА "3", ТО "С"
ELSE 'ELSEVALUE'
Конец как ExtractString
От master_support

Mithi Ravi

Спасибо!

Рейтинг:
1

Maciej Los

Если master_support таблица содержит описание идентификаторов, которые вы можете получить с помощью запроса:

SELECT descr
FROM master_support


Если такого поля нет, я бы рекомендовал его добавить. Видеть:
ALTER TABLE master_support
ADD descr VARCHAR(20) NULL;

UPDATE master_support
SET descr = 'A'
WHERE ID = 1;

UPDATE master_support
SET descr = 'B'
WHERE ID = 2;

UPDATE master_support
SET descr = 'C'
WHERE ID = 3;


Для получения более подробной информации, пожалуйста, смотрите: Добавление столбцов в таблицу (компонент Database Engine) - SQL Server | Microsoft Docs[^]


Mithi Ravi

Спасибо! Проверим этот запрос.

Mithi Ravi

Привет, это изменит основную таблицу данных. Но мне нужно, чтобы результат был получен как A, B, C вместо 1,2,3... Пожалуйста, есть какое-нибудь решение?

Maciej Los

Если вы обновили свою таблицу, запрос довольно прост: SELECT id, descr from master_support
Другими словами, вы должны перечислить все поля, которые хотите получить.