Как сделать SQL-запрос для сортировки данных одного и того же типа из двух столбцов таблицы и выбрать из запроса

#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;