#sql #sql-server
#sql #sql-server
Вопрос:
Значения в AnswerInt
— это числа от 1 до 5. Число соответствует LabelText
номеру столбца.
Я хочу, чтобы возвращался столбец, AnswerInt
а затем только столбец, на который LabelText
он ссылается.
SELECT
Question,
AnswerInt,
AnswerText,
CreatedTime,
LabelText1,
LabelText2,
LabelText3,
LabelText4,
LabelText5,
SurveyType,
ResponseTypeDesc,
FROM
dbo.WEBSITE_SURVEYS
WHERE
CASE AnswerInt
WHEN '1' THEN 'LabelText1'
WHEN '2' THEN 'LabelText2'
WHEN '3' THEN 'LabelText3'
WHEN '4' THEN 'LabelText4'
WHEN '5' THEN 'LabelText5'
Ответ №1:
Поскольку у вас есть число для определения возвращаемого значения, которое относится к столбцу, вы могли бы использовать CHOOSE
здесь; что фактически является сокращенным CASE
выражением:
SELECT Question,
AnswerInt,
AnswerText,
CreatedTime,
SurveyType,
ResponseTypeDesc,
CHOOSE(AnswerInt, LabelText1, LabelText2, LabelText3, LabelText4, LabelText5) AS LabelText
FROM dbo.WEBSITE_SURVEYS;
Ответ №2:
Вы имели в виду поместить CASE
выражение в SELECT
предложение?
SELECT
Question,
AnswerInt,
AnswerText,
CreatedTime,
SurveyType,
ResponseTypeDesc,
CASE AnswerInt
WHEN '1' THEN LabelText1
WHEN '2' THEN LabelText2
WHEN '3' THEN LabelText3
WHEN '4' THEN LabelText4
WHEN '5' THEN LabelText5
END AS LabelText
FROM
dbo.WEBSITE_SURVEYS
Комментарии:
1. Да, но я новичок в этом и погуглил это. Это неправильно?
Ответ №3:
Если число в столбце AnswerInt совпадает с номером LabelText столбца, попробуйте выполнить этот простой запрос:
select
Question,
AnswerInt,
AnswerText,
CreatedTime,
SurveyType,
ResponseTypeDesc,
CONCAT('LabelText', AnswerInt)LabelText
FROM
dbo.WEBSITE_SURVEYS