2016-03-06 88 views
-2

我有一個使用SQL請求 EXP以填補兩個不同的數據一個一個列:如何構建這個請求查詢

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

你可以嘗試使用while循環在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),並加入他們的第一臺國防部的行號2加一(這將有值1或2)

根據您所展示的內容我們無法真正回答您的問題。例如,這會做你要求什麼 - 以數據在一列,其重複3次

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

好吧我會用deatails解釋:讓桌子有200條記錄和11列我最後一個是servey列應該是這樣的你是男性還是女性?而下一張唱片是你20歲以下的年紀?一個接一個,直到最後一個記錄 – Yassine

+0

同樣的事情是這樣的:INSERT INTO my_table VALUES(從table1中選擇不同的my_colmn) – 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);