2016-03-06 4 views
-2

я должен заполнить столбец с одной два различных данных по одному с помощью SQL запроса ехр:Как построить этот запрос запрос

My_Table1

## CL1 ## ## CL2 ## ## CL3 ## 
---------- ---------- ---------- 

- DATA1 X1   
- DATA2 X2 
- DATA4 X3 
- DATA5 X4 
    *  * 
    *  * 
- DATA200 X200 

Table_2

## CLX ## 
---------- 
    are you under 20 yeras old ? 
    are you male or female ? 

Я хочу результат будет таким:

## CL1 ## ## CL2 ## ## CL3 ## 
---------- ---------- ---------- 

- DATA1 X1   are you under 20 yeras old ? 
- DATA2 X2   are you male or female ? 
- DATA4 X3   are you under 20 yeras old ? 
- DATA5 X4   are you male or female ? 
    *  * 
    *  * 
- DATA200 X200   are you under 20 yeras old ? 

Как будет использоваться запрос SQL? databae является Oracle

+0

Вы можете попробовать использовать время цикла в SQL – Chuck

+0

, как вы можете дать мне образец пример ? – Yassine

+0

Невозможно ответить на ваш вопрос без каких-либо подробностей. Какова структура/модель вашей базы данных. Какие данные он содержит (ввод) Каков ожидаемый результат. Я понимаю, что у вас есть ввод и вывод в вашем вопросе, но это не помогает ... так как нет способа понять, как он получается из другого. Это всего лишь 3 раза, что в таблице? – Hogan

ответ

0
SELECT CL1, CL2, CLX 
FROM (SELECT CL1, CL2, ROW_NUMBER() OVER (ORDER BY CL1 ASC) AS RN 
     FROM My_Table 
    ) AS T1_WITH_RN 
JOIN (SELECT CLX, ROW_NUMBER() OVER (ORDER BY CLX DESC) AS RN 
    ) AS T2_WITH_RN ON MOD(T1_WITH_RN.RN, 2) + 1 = T2_WITH_RN.RN 

Как это работает

  • Сначала использовать запрос с функцией окна ROW_NUMBER(), чтобы назначить увеличивающееся число к результату запроса
  • Тогда мы делаем то же самое для таблицы два (мы ожидаем только два значения для RN ​​здесь 1 и 2) и присоединяем их к номеру строки первой таблицы mod 2 плюс один (который будет иметь значения 1 или 2)

Основываясь на том, что вы показываете, мы не можем ответить на ваш вопрос. Например, это будет делать то, что вы просите - принимая данные в колонку и повторять его 3 раза

SELECT column_Text FROM table 
    UNION ALL 
SELECT column_Text FROM table 
    UNION ALL 
SELECT column_Text FROM table 
+0

Хорошо, я объясню с помощью десиаталей: пусть у стола есть 200 записей и 11 столбцов, последний из которых я хочу, чтобы столбец был таким, как вы, мужчина или женщина? и следующая запись - вам менее 20 лет? один за другим до последней записи – Yassine

+0

То же самое: INSERT INTO my_table VALUES (выберите отличный my_colmn from table1) – Yassine

+0

@ Yassine - до сих пор не знаю, что вы имеете в виду - ** вы должны разместить модель данных, например вход и пример вывода ** (Дополнительная информация, которая очищает детали, также может помочь.) – Hogan

0
SELECT m.*, 
     t.clx 
FROM (SELECT m.*, 
       ROWNUM AS rn 
     FROM My_Table1 m) m 
     INNER JOIN 
     (SELECT t.*, 
       ROWNUM - 1 AS rn, 
       COUNT(*) AS mx 
     FROM Table_2 t) t 
     ON (MOD(m.rn, t.mx) = t.rn); 
Смежные вопросы