Можно ли расширить номер хранения столбца в 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 в подзапросе, в противном случае он выполнит соединение со всей таблицей перед фильтрацией, и это будет ужасно для вашей производительности.