Разбить строку на несколько строк в хранимой процедуре в sql server 2008

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я хочу разделить строки на несколько строк на основе значения столбца.Например, если у меня есть рабочие часы от 1 до 8 в одной строке, я хочу разделить его на две строки, одну от 1 до 4, а другую от 4 до 8

 Table is as follows-

hrs         end        name                   class
1           8          s                      3
 

Я хочу разделить ее на

 hrs         end        name                   class
1           4          s                      1
4           8          s                      2
 

Пожалуйста, ответьте

Комментарии:

1. Пожалуйста, объясните логику того, как «1-8» разбивается на две строки. Кроме того, почему class изменяется значение.

2. откуда я могу знать, что для этого мне нужно разделить ее на два столбца…

3. Это не похоже на проблему, которую вы должны решать в sql..

4. если значение класса равно 3, то мы делим его на две строки, одна из которых содержит 1 класс, а другая содержит 2 и количество часов, т.е. (1-8), также делим его на 2 части

Ответ №1:

Для разделения одной строки на две строки можно использовать следующую концепцию

 select 1 as hrs, 4 as end , name, 1 as class from theTable WHERE class=3
UNION
select 4  as hrs, 8 as end, name, 2 as class from theTable WHERE class=3
 

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

Комментарии:

1. что, если класс равен 4, u добавит еще один оператор объединения?

2. я не уверен, как вы ожидаете результата, если class = 4. в этом случае может потребоваться добавить дополнительное объединение

3. Что делать, если есть еще одна строка данных?