#sql
Вопрос:
У меня есть таблица, в которой два столбца содержат похожие данные, но я хочу проверить два столбца col1 и col2, если количество данных в col1 равно количеству данных col2, составьте временный список данных col1, в котором меньше данных в col2. мой столик такой.
Col1 | Col2 |
---|---|
0001 | 0000 |
0002 | 0001 |
0003 | 0001 |
0004 | 0002 |
0005 | 0002 |
0006 | 0003 |
0007 | 0004 |
0008 | 0005 |
поэтому я хочу проверить col1 на соответствие col2, любые данные в col2, которые меньше 2, будут перечислены во временном списке, затем из временного списка я хотел бы выбрать любое количество строк.
Пожалуйста, кто-нибудь, у кого есть идеи о том, как я могу это решить. Спасибо.
Отредактированный. Мой ожидаемый результат таков:
Col1 | Col2 | температура |
---|---|---|
0001 | 0000 | нулевой |
0002 | 0001 | нулевой |
0003 | 0001 | 0003 |
0004 | 0002 | 0004 |
0005 | 0002 | 0005 |
0006 | 0003 | 0006 |
0007 | 0004 | 0007 |
0008 | 0005 | 0008 |
Тогда теперь я могу выбрать из списка temp col.
Комментарии:
1. Если столбцы находятся в одной и той же таблице, у вас всегда будет одинаковое «количество данных», если вы подразумеваете равные строки, если только вы не заполняете нули для любого столбца и не хотите их подсчитывать.
2. Также укажите ожидаемый результат.
3. Таблица — это не электронная таблица. Данные в таблице представляют собой набор строк, все строки содержат одинаковое количество столбцов.
4. Вы имеете в виду, что temp должен быть равен нулю, если Col1
5. ДА. где Col1 отображается двумя в Col2, temp должен быть равен нулю. как показано в моей таблице ожидаемых результатов выше.
Ответ №1:
Если я правильно тебя понял… Вот некоторые данные Oracle SQL:
With data (col1, col2) as(Select '0001', '0000' from dual union all Select '0002', '0001' from dual union all Select '0003', '0001' from dual union all Select '0004', '0002' from dual union all Select '0005', '0002' from dual union all Select '0006', '0003' from dual union all Select '0007', '0004' from dual union all Select '0008', '0005' from dual) select col1 ,col2 ,case when to_number(col1)-to_number(col2)lt;2 then null else col1 end col3 from data;