[英]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.