簡體   English   中英

PL/SQL:在 for 循環中加入語句

[英]PL/SQL: Join statements in for loop

我是 PL/SQL 的初學者。

我試圖在特定數據框中每個月循環一次,為每個用戶選擇幾個屬性並將其附加(加入)到一個表中,其中每一行代表一個用戶。 我對替代(可能更快),完全不同的解決方案非常開放。

BEGIN
      ResultTable = ???
    FOR k IN 1..24 LOOP
      SELECT * FROM(
         SELECT a.Userid, a.size as ('size, time=' || to_char(k)), a.weight as ('weight, time=' || to_char(k))
            FROM Original a
            INNER JOIN ResultTable b
               ON a.Userid= b.Userid
       ) ResultTable 
    END LOOP;  
    END;  

例如:

+--------+------+------+--------+----+
|   ID   | time | size | weight | …  |
+--------+------+------+--------+----+
| 1      | 1    | 4    | 5      | .. |
| 1      | 2    | 6    | 11     | .. |
| 1      | …    | ..   | ..     | .. |
| 1      | 24   | 8    | 3      | .. |
| 2      | 1    | 4    | 5      | .. |
| 2      | 2    | 8    | 11     | .. |
| 2      | …    | ..   | ..     | .. |
| 2      | 24   | 18   | 5      | .. |
| …      | …    | …    | …      | …  |
| 278000 | 1    | 8    | 6      | .. |
| 278000 | 2    | 16   | 11     | .. |
| 278000 | …    | ..   | ..     | .. |
| 278000 | 24   | 8    | 3      | .. |
+--------+------+------+--------+----+


+--------+--------+---------+-------+---------+---+--------+----------+
|   ID   | size1  | weight1 | size2 | weight2 | … | size24 | weight24 |
+--------+--------+---------+-------+---------+---+--------+----------+
| 1      | 4      | 5       | 6     | 11      | … | 8      | 3        |
| 2      | 4      | 5       | 8     | 11      | … | 18     | 5        |
| …      | …      | …       | …     | …       | … | …      | …        |
| 278000 | 8      | 6       | 16    | 11      | … | 8      | 3        |
+--------+--------+---------+-------+---------+---+--------+----------+

我編輯了我的問題以使其更具可讀性。

您可以使用PIVOT如下:

SELECT * FROM
(
  SELECT ID, TIME, SIZE, WEIGHT FROM YOUR_TABLE
)
PIVOT
(
  MAX(SIZE) AS SIZE, MAX(WEIGHT) AS WEIGHT 
  FOR TIME IN (1,2,3,...24)
)

干杯!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM