Можно ли расширить номер хранения столбца в Oracle

Can we expand a column storing number somehow in the output.
I am trying to expand one column with other column having same value.

столбец, который я пытаюсь, это число... например, если значение равно 3, тогда результат в запросе выбора должен иметь 1,2,3 с другим столбцом, имеющим те же данные. Это возможно?

For ex, 

ВХОДНОЙ СТОЛ

    Can we expand a column storing number somehow in the output.
    For ex, <br>
    <h4>INPUT TABLE IS :</h4>
     
    <table style="width:50%" border=1>
      <tr>
        <td>Thank</td>
        <td>You </td> 
        <td>2 </td>
      </tr>
      <tr>
    </table>
    <br>
    <h4>Output TABLE should be like this :</h4>
     
    <table style="width:50%" border=1>
      <tr>
        <td>Thank</td>
        <td>You </td> 
        <td>1 </td>
      </tr>
    <tr><br>
        <td>Thank</td>
        <td>You </td> 
        <td>2 </td>
      </tr>
      <tr>
    </table>
    <br><br>
    value of last column is number and has expanded.<br>
    <b>Column1 and column2 should contain same value.</b><br>
    
    The problem is that i can change the input table and this is how i need the output.<br>
    I am trying using dual table join with table1 and use CONNECT BY but not getting the result . 

<br> Any help on this..

Выходная таблица

Значение последнего столбца является числом и расширилось. Столбец1 и столбец2 должны содержать одно и то же значение.

The problem is that i can change the input table and this is how i need the output.
I am trying using dual join with table1 and use CONNECT BY but not getting the result . 

1 ответ

Хорошо, вот логика, чтобы получить ваш столбец 'count'...

SELECT LEVEL AS Column3
FROM DUAL
CONNECT BY LEVEL <= @EnteredNumber;

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

Как это работает, так это то, что он создает цикл со ссылками на себя, который создает "наследование", где каждая последующая строка считается дочерней по отношению к предыдущей. Это странно, да... но это должно работать

Редактирование, чтобы скорректировать мой ответ для работы с особенностями, которые вы просили в комментарии:

SELECT t.Column1, t.Column2, LEVEL As Column3 
FROM (
    SELECT Column1, Column2, Column3Value 
    FROM Table_1  
    WHERE t.column1='value' 
    AND t.column2 = 'value2'
) t 
CONNECT BY LEVEL <= t.Column3Value

Убедитесь, что вы выполняете работу WHERE в подзапросе, в противном случае он выполнит соединение со всей таблицей перед фильтрацией, и это будет ужасно для вашей производительности.

Другие вопросы по тегам