Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

MS SQL Server(не обязательно): как создать временный список для операции сравнения?

John Snow Профи (849), на голосовании 5 лет назад
Есть задание: "Сравнив собственный порядковый номер в группе с набором из всех номеров в группе, вывести на экран «;-)», - если он меньше все из них, или «:-D» в противном случае". Обязательно ли создавать таблицу с номерами от 1 до 25 для сравнения в CASE? Или можно как то искать по списку типа этого [1,2,3,4,5,..] ?
Пока решение только такое:

SELECT Number,
CASE
WHEN Number < 2 THEN ';)'
WHEN Number > 2 THEN ':-D'
ELSE ')'
END AS EMOTION
FROM GroupNumbers
ORDER BY Number;
Дополнен 5 лет назад
Если решение кроется во временной таблице, как её быстро заполнить? Создаем временную таблицу с 1 столбцом. Дальше инсертами 25 раз добавлять?
Голосование за лучший ответ
Сергей Иванов Просветленный (27715) 5 лет назад
declare @xmin int

select @xmin=min(number)
from GroupNumbers

SELECT Number,
CASE
WHEN Number < @xmin THEN ';)'
WHEN Number > @xmin THEN ':-D'
ELSE ')'
END AS EMOTION
FROM GroupNumbers
ORDER BY Number;
John SnowПрофи (849) 5 лет назад
Сделал так с временной таблицей, это норм?
CREATE TABLE #GroupNumbersInt (Number INT);
INSERT INTO #GroupNumbersInt VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14), (15),(16),(17),(18),(19),(20),(21),(22),(23),(24),(25);
SELECT Number,
CASE
WHEN Number < 3 THEN ';)'
WHEN Number > 3 THEN ':-D'
ELSE 'Me'
END AS Answer
FROM #GroupNumbersInt ORDER BY Number;
Похожие вопросы